我处于Ninject困境中。另外,如何将我的C#解决方案中的多个区域绑定到同一个容器。总而言之,我知道通过Ninject模块进行加载是实现这一目标的最佳方法,但我无法直接访问内核(正如我所了解的那样,反模式)来拨打_kernel.Get<T>()
。使用Ninject注入类库,其中构造函数接受多个参数
所以我相信构造函数注入是最好的方法。现在假设我有顶层类Program
,它加载Module : NinjectModule
类
class Program
{
IKernel _kernel;
public static main()
{
_kernel = new StandardKernel();
_kernel.Load(ClassA.Module);
_kernel.Load(ClassB.Module);
}
}
为了保持代码到最低限度,假设ClassA的模块并列的ISomething
所有实现对ConcreteSomething
,并且ClassB
(其中ClassA
取决于)实现以下构造方法;
public ClassB(ISomething thing, int paramA, int paramB)
{
//Do stuff with paramA and paramB using thing
}
在一个单一的解决方案中,_KERNEL可以直接访问,_kernel.Get<ClassB>.WithConstructorArgument("paramA", 123).WithCon...
不过,我不确定如何这会工作,其中提供类有它的调用者容器的访问权限。
有一种想法超越了我的想法是使用工厂方法,但我不知道这是如何工作的。
任何重量将不胜感激。
paramA,paramB(ClassB的ctor)的值来自哪里? – BatteryBackupUnit