我们正在为少数客户构建应用程序,每个客户都有自己的需求以及类似的需求。我们还希望将所有代码保留在同一个应用程序中,而不是将其分支,并且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