Вопрос

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.

Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top