我有一个如下所示的WCF服务:(为清晰起见省略了服务合同属性)
public interface IMyService
{
void LoadBulkData(LoadRequest request);
}
public class MyService : IMyService
{
IUnityContainer unity = new UnityContainer();
IDataProvider provider;
public MyService()
{
unity.LoadConfiguration();
provider = unity.Resolve<IDataProvider>();
}
public void LoadBulkData(LoadRequest request)
{
// ...
}
}
根据公司政策, Microsoft Unity 必须用于DI / IoC。因为这是WCF,我无法使用 构造函数注入,因为服务实现必须使用默认的无参数构造函数。
特别是,我不喜欢使用Unity来解析构造函数中的依赖项。有没有人 知道解决这个问题的方法吗?此外,是否有一种模式可能更适合我的需求 这里吗?
答案 0 :(得分:3)
为什么不使用Property Injection:
答案 1 :(得分:2)
我自己博客的无耻插件:)
http://thirteendaysaweek.com/2010/12/01/dependency-injection-and-wcf-services/
使用WCF和Unity进行构造函数注入实际上非常容易。您最终需要一个自定义的ServiceHost,ServiceHostFactory,一个与容器和IServiceBehavior实现交互的IInstanceProvider实现。总而言之,这不是很多代码,而且相当容易理解。
答案 2 :(得分:0)
您可以使用Ninject和WCF Ninject Extension。 http://ninject.org/
答案 3 :(得分:0)
This blogpost描述了如何实现自定义WCF IInstanceProvider