我們正在爲少數客戶構建應用程序,每個客戶都有自己的需求以及類似的需求。我們還希望將所有代碼保留在同一個應用程序中,而不是將其分支,並且IF不是很好的選擇,因爲它將遍佈各處。動態加載來自不同程序集的類(具有自定義行爲)?
我計劃擁有所有的基類。然後每個客戶都有自己的類,其中重寫方法將執行特殊邏輯。
如何編譯,而不是在做這個
public class BaseClass {
public string getEventId()
}
public class ClassForJohn:BaseClass {
[override]
public string getEventId()
}
public class ClassForAdam:BaseClass {
[override]
public string getEventId()
}
void UglyBranchingLogicSomewhere() {
BaseClass eventOject;
if("John"==ConfigurationManager.AppSettings["CustomerName"]){
eventOject = new ClassForJohn();
}else if("Adam"==ConfigurationManager.AppSettings["CustomerName"]){
eventOject = new ClassForAdam();
}else{
eventOject = new BaseClass();
}
eventId = eventOject.getEventId();
}
MEF似乎升這裏是個不錯的選擇。 http://msdn.microsoft.com/en-us/library/dd460648.aspx – spender 2013-02-28 18:29:25
@spender但不可用的預覽版4,我敢肯定有「少企業」或「少這種方式」的替代品。 – 2013-02-28 18:30:33
你有沒有考慮過使用依賴注入?您可以在應用程序啓動時根據給定的客戶配置依賴關係。 – jrummell 2013-02-28 18:31:00