我有一個WCF服務,它有幾個不同的職責,但它爲任何與我的代碼交互的人提供了一個切入點。爲了簡單起見,假設有2種方法IOC容器 - 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();
}
因爲消費者只會調用該服務的一個原因,治法或方法b,它是一個問題,即IOC容器將是不必要的旋轉起來所有的依賴?我想提供一個入口點,所以我不想分解這個服務,但是當每個服務的使用者只需要一個子集時,旋轉所有的依賴關係似乎有點浪費。
我想這樣做的另一種方式是像
public void MethodA() {
var methodA = ObjectFactory.GetInstance<IMethodAHelper>();
methodA.CallThis();
}
這使得每個「路徑」彈出它所需要的依賴關係,但是,這使得它要困難得多寫單元測試。有沒有人有什麼建議?它是如何激化所有依賴關係的問題?在此服務的第一個入口點之後,通過構造函數注入依賴關係是有意義的,但在此入口點處,建議的方法是什麼?