我有一个IIS托管的WCF应用程序。现在服务有这个构造函数:
public ClassService()
: this(new ClassRepository())
{
}
public ClassService(IClassRepository repository)
{
_Repository = repository;
}
无参数构造函数是因为WCF要求您在生成服务代理时具有无参数构造函数。现在,当我在UI程序集中有服务代理时,没有IClassRepository的构造函数,所以我不能注入存储库的实现。
这是如何做到的?我的一个想法是,注入不是在UI中进行,而是在服务中进行,但我不确定这是否会产生一些影响或者只是简单的不好。有人可以给我一些想法吗?
答案 0 :(得分:1)
您需要做的是实施WCF InstanceProvider,将创建请求委派给您选择的容器。在对实例提供程序进行编码后,可以通过实现WCF service behavior将其安装在ServiceHost中。反过来,通过将服务行为添加到集合ServiceHostBase.Description.Behaviors来安装服务行为。
Here's MSDN杂志关于WCF可扩展性的文章。