有没有办法结合对 FromAssembliesMatching 的调用来自动设置大多数接口和一些显式绑定?我有以下代码应该自动将所有 ISomething 设置为 Something,然后为 IUnitOfWork 接口设置一个特定的构造函数,其中具体实现接受两个布尔值作为参数:
kernel.Bind(x => x.FromAssembliesMatching("*.dll").SelectAllClasses()
.InNamespaces("MyNamespace").BindDefaultInterface());
kernel.Bind<IUnitOfWork>().ToConstructor(x => new UnitOfWork(true, false));
但是,当我尝试像这样调用 TryGet 时,我得到一个空值:
kernel.TryGet<MyNamespace.IUnitOfWork>()
当我切换顺序并在第二次调用中明确调用 UnitOfWork 实现的 Excluding 时,它工作正常:
kernel.Bind<IUnitOfWork>().ToConstructor(x => new UnitOfWork(true, false));
kernel.Bind(x => x.FromAssembliesMatching("*.dll").SelectAllClasses()
.InNamespaces("MyNamespace").Excluding(typeof(UnitOfWork))
.BindDefaultInterface());
当我尝试解析 IUnitOfWork 的实例时,颠倒顺序或省略对 Excluding 的调用会再次导致 null。
将自动匹配与显式配置相结合的正确方法是什么?我正在使用 Ninject 3.2.0.0 和 Ninject.Extensions.Conventions 3.2.0.0。