【发布时间】:2011-08-09 15:30:25
【问题描述】:
我想使用 Ninject.Wcf 扩展来创建参数化服务主机实例。
例如,我有一个类MyWCFHandler,只有以下构造函数:
public MyWCFHandler(UserManager manager)
{
_manager = manager;
}
但是当我写var myServiceHost = new ServiceHost(typeof(MyWCFHandler)); 时,我无法将依赖对象传递给构造函数。
我不想弄乱像提供的自定义 ServiceHost How do I pass values to the constructor on my wcf service?
我决定采用 Ninject 方式,但无法完全理解如何在我的情况下采取行动。
这是我对 Ninject 中 WCF 扩展的理解:
- 在我的项目中引用 Ninject 和 Ninject.Extensions.WCF。
-
创建一个继承 Ninject 模块的类并编写如下内容:
internal class ServiceModule : NinjectModule { public override void Load() { Bind<IUserManager>().To<UserManager>().WithConstructorParameters(myUserManagerIwantToUseInWCFHandler); } } 将使用 new ServiceModule() 初始化的内核添加到 KernelContainer。
-
像这样使用 NinjectServiceHost:
var service = KernelContainer.Kernel.Get<IMyWCFHandler>(); _host = new NinjectServiceHost( service );
我应该在那里准备好打开我的主机。
问题是:
我应该如何将我的构造函数参数传递给 NinjectModule?当我准备好将参数绑定到它时,是否应该创建一个 NinjectModule 实例?如何将它们传递给 Get 方法?
不幸的是,没有一个示例可以简单地显示参数化的 ServiceHost 启动。我什至不在乎我使用的是不是 Ninject。无论哪种解决方案都有一个很好的例子——我很好,因为我只是决定使用什么 IoC 容器。
【问题讨论】: