4
我正在處理使用Ninject作爲IoC容器處理動態注入的框架擴展,但我在嘗試解決如何實現這一點時遇到了一些麻煩。與Ninject的後期綁定
我的框架的期望是,你會因此它可以很容易地在MVC,WebForms的,等使用的IModule(s)
所以我的類結構像這樣通過:
public class NinjectFactory : IFactory, IDisposable {
readonly IKernel kernel;
public NinjectFactory(IModule[] modules) {
kernel = new StandardKernel(modules);
}
}
這是好的,我可以在單元測試中創建一個實例,並通過IModule
的基本實現(使用InlineModule
中的構建,這似乎是推薦用於測試的構建)。
的問題是,它不是直到運行時,我知道是什麼類型(S)我需要注入,它們通過我擴展框架的要求,在這樣的方法:
public IInterface Create(Type neededType) {
}
這裏的地方我很爲難,我不知道要入住的最好辦法>創建(如果需要) - >回,我有這個至今:
public IInterface Create(Type neededType) {
if(!kernel.Components.Has(neededType)) {
kernel.Components.Connect(neededType, new StandardBindingFactory());
}
}
這也增加了組件集合,但我不能解決它是否創建了一個實例,或者我如何創建一個實例並傳入的參數。
我是以正確的方式去做的,還是Ninject不打算用這種方式?