我想知道如何从DataAccess的默认构造函数中获取参数名称“kernel”。
_kernel.Get<DataAccess>(new Parameter("kernel", _kernel, true));
我想避免这些“神奇的字符串”,并得到类似的东西:
_kernel.Get<DataAccess>(new Parameter(DataAccess.Constructor.kernel, _kernel, true));
此致
答案 0 :(得分:0)
也许我误解了,你还没解释为什么需要使用命名参数。例如,您不需要将内核作为参数提供。它默认绑定到IKernel
,因此如果您的DataAccess
类看起来像:
public class DataAccess {
public DataAccess(IKernel kernel) {
}
}
然后调用Get
应该自动注入内核:
_kernel.Get<DataAccess>();
也就是说,注入内核被认为是不好的做法,请参阅Service Locator antipattern。而是注入你将从内核获得的依赖项,如下所示:
public class DataAccess {
public DataAccess(IMyDependency myDependency, ...) {
}
}
让ninject通过绑定来解析依赖关系:
_kernel.Bind<IMyDependency>().To<MyDependency>();