【发布时间】:2011-05-04 12:56:04
【问题描述】:
我有一个 WCF 服务,它有几个不同的职责,但它为任何与我的代码交互的人提供了一个入口点。为了简单起见,假设有两种方法
private IMethodAHelper _methodA;
private IMethodBHelper _methodB;
public MyService(IMethodAHelper methodA, IMethodBHelper methodB)
{
_methodA = methodA;
_methodB = methodB;
}
public void MethodA() {
_methodA.CallThis();
}
public void MethodB() {
_methodB.CallThis();
}
因为消费者只会出于一个原因调用服务,MethodA 或 MethodB,所以 IOC 容器会不必要地启动所有依赖项是否存在问题?我想提供一个入口点,所以我不想拆分服务,但是当服务的每个消费者只需要一个子集时,启动所有依赖项似乎有点浪费。
我想这样做的另一种方式是
public void MethodA() {
var methodA = ObjectFactory.GetInstance<IMethodAHelper>();
methodA.CallThis();
}
这允许每个“路径”显示它需要的依赖项,但是,这使得编写单元测试变得更加困难。有没有人有什么建议?启动所有依赖项有多大的问题?在服务的第一个入口点之后,通过构造函数注入依赖项是有意义的,但是在这个第一个入口点,推荐的方法是什么?
【问题讨论】:
标签: c# wcf inversion-of-control