如何在WCF应用程序中执行依赖项注入

时间:2014-06-16 13:37:44

标签: wcf dependency-injection

我有一个IIS托管的WCF应用程序。现在服务有这个构造函数:

    public ClassService()
        : this(new ClassRepository())
    {
    }

    public ClassService(IClassRepository repository)
    {
        _Repository = repository;
    }

无参数构造函数是因为WCF要求您在生成服务代理时具有无参数构造函数。现在,当我在UI程序集中有服务代理时,没有IClassRepository的构造函数,所以我不能注入存储库的实现。

这是如何做到的?我的一个想法是,注入不是在UI中进行,而是在服务中进行,但我不确定这是否会产生一些影响或者只是简单的不好。有人可以给我一些想法吗?

1 个答案:

答案 0 :(得分:1)

您需要做的是实施WCF InstanceProvider,将创建请求委派给您选择的容器。在对实例提供程序进行编码后,可以通过实现WCF service behavior将其安装在ServiceHost中。反过来,通过将服务行为添加到集合ServiceHostBase.Description.Behaviors来安装服务行为。

Here's MSDN杂志关于WCF可扩展性的文章。