Frage

i have the following interfaces injected in Castle Windsor. how do i do the same in Ninject?

container.Register(
    AllTypes.FromAssemblyNamed("Apps.Web")
        .BasedOn(typeof(ICommandHandler<>))
        .WithService.FirstInterface());

i've tried:

this.Bind(x => x.FromAssembliesMatching("Apps.Web.dll")
     .Select(y => y.Namespace.EndsWith("Handlers"))
     .BindSingleInterface());

but getting Object reference not set to an instance of an object error.

War es hilfreich?

Lösung

You can use Ninject's convention binding extensons (install it from NuGet) to do this.

Something like the following should work

kernel.Bind(x => x.FromAssembliesMatching("Apps.Web")
    .SelectAllClasses()
    .InheritedFrom(typeof(ICommandHandler<>))
    .BindSingleInterface());

I'm not 100% sure about the FromAssembliesMatching pattern, but you should be able to tweak that to pick up your assembly.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top