我處於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