Unity和WCF库:在wcf库中加载统一的位置?

时间:2009-10-08 12:58:23

标签: c# wcf tdd unity-container ioc-container

任何人都可以帮忙吗?

我创建了一个WCF库(不是应用程序),我将在SVC IIS页面中托管它。

但是我想在通用位置加载统一内容...我可以在global.asax中加载它然后它绑定到IIS Asp.net容器并且在执行TDD时这部分不会执行所以不会我的决心会奏效。

WCF库是一个纯类,所以我怀疑我可以使用OnStartup等任何事件吗?

我想到了服务从基类继承的唯一方法以及调用某种类型的静态类并为统一进行自举的接口。

我有点失落,这是唯一的方式,还是有一些我不知道的方式。

基本上这个想法是......谁曾经调用过wcf库,那么统一注入需要发生..

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:5)

有几种方法可以解决这个问题。以下是两个最佳选择:

您可以创建自定义ServiceHost并覆盖InitializeRuntime

您可以使用公共静态方法AppInitialize在App_Code目录中创建一个名为ApplicationStart的类(虽然它有点气味):

public static class ApplicationStart
{
    public static void AppInitialize()
    {
        // Initialise IoC container
    }
}

文龙东有other methods on his blog

答案 1 :(得分:0)

您可以使用IInstanceProvider使用Unity或其他IOC容器创建服务对象。查看this博文,了解有关如何操作的详细信息。

接下来,您可以使用作为属性实现的IContractBehavior,通过在ApplyDispatchBehavior方法中设置InstanceProvider,将IInstanceProvider添加到DispatchRuntime。

答案 2 :(得分:0)

现在有一个名为 Unity.WCF 的开源NuGet软件包,可以为您解决此问题。

有关更多信息和源代码,请参阅http://unitywcf.codeplex.com/