有人可以指导我为WCF服务提供Unity Dependency Injection的好例子吗? 任何博客或msdn文章也会有所帮助。
答案 0 :(得分:5)
要将依赖项注入WCF服务,我必须实现服务主机工厂。
我找到了一步一步的教程here。
基本上你必须:
答案 1 :(得分:5)
This answer给出了如何使用Castle Windsor在WCF中启用DI的示例。
在示例中只需将IWindsorContainer替换为IUnityContainer,您应该全部设置,尽管您可能还想将类名从WindsorXyz更改为UnityXyz:)
答案 2 :(得分:2)
我即将尝试Unity.Wcf库(https://github.com/ViceIce/unity.wcf),乍一看看起来相当不错。我在this article读到了这个:
如果使用ServiceHost在Windows服务中托管WCF服务,请将ServiceHost实例替换为自定义Unity.Wcf.UnityServiceHost。您会发现UnityServiceHost将Unity容器作为其第一个参数,但在其他方面与默认的ServiceHost相同。
因为我的情况我会这样做......
class Program
{
static void Main(string[] args)
{
// 1st Initialize the Host (Configures Container and Factories)
ServiceHostController.Initialize();
// 2nd Create a URI to serve as the base address.
var baseAddress = new Uri("http://localhost:54321/BlaBlaBla/");
// 3rd Create a UnityServiceHost instance
var myService = new UnityServiceHost(ServiceHostController.UnityContainer, typeof(MyService), baseAddress);
try
{ //etcetera...
它对我有用,我仍然需要重构一些东西并添加功能和方法,但起点就像一个魅力。
我希望它有所帮助。