2

我在温莎城堡中注入了以下接口。我如何在 Ninject 中做同样的事情?

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

我试过了:

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

但获取对象引用未设置为对象错误的实例。

4

1 回答 1

7

您可以使用 Ninject 的约定绑定扩展(从NuGet安装)来执行此操作。

像下面这样的东西应该工作

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

我对FromAssembliesMatching模式不是 100% 确定,但你应该能够调整它以获取你的装配。

于 2013-06-03T13:12:48.837 回答