【发布时间】:2011-12-20 14:59:09
【问题描述】:
我有一个如下所示的 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 来解决构造函数中的依赖关系。有没有人 知道解决这个问题的方法吗?另外,是否有一种模式可能更适合我的需求 在这里?
【问题讨论】:
-
您可以构建自己的 SericeHostFactory 为您执行 DI/IoC。
-
你有什么问题,我们在各种服务中使用了类似的东西,效果很好。
-
@ChrisBint - 问题在于,由于没有属性或构造函数注入,因此没有机会注入模拟进行测试。
-
考虑到我正在单独测试每个部分,这点很好。
-
我只想指出,你们公司的政策是愚蠢的。
标签: c# wcf design-patterns dependency-injection unity-container