【发布时间】:2011-08-29 06:11:14
【问题描述】:
使用 Ninject,如何配置内核以便我可以定义哪些构造函数值传递到对象的实例化中?
我在一个模块中配置了以下内容:
Bind<IService1>()
.To<Service1Impl>()
.InSingletonScope()
.Named("LIVE");
Bind<IService2>()
.To<Service2Impl>()
.InSingletonScope()
.Named("LIVE")
.WithConstructorArgument(
"service1",
Kernel.Get<IService1>("LIVE"));
Service2Impl 采用 IService1 的构造函数参数,但我希望它来自容器。我还想命名绑定,因为我的代码将在运行时针对不同的版本。
这似乎可行,但它是实现我想做的正确方法吗? 我是否应该在不使用命名绑定并将不同的配置模块连接到内核的情况下实现?
编辑
我现在使用 ToMethod() 方法来指定一个委托,以便在特定类型的请求时调用。这似乎更好一些,因为如果构造函数配置错误,我将收到编译时警告,而不必知道我首先传递的参数的名称。
谢谢
【问题讨论】:
标签: c# .net dependency-injection ninject