我们正在为少数客户构建应用程序,每个客户都有自己的要求以及类似的要求.我们还希望将所有代码保存在同一个应用程序中,而不是将其分支,并且IF不是很好的选择,因为它将遍布所有地方.
我计划为所有人提供基础课程.然后每个客户都有自己的类,其中override方法将执行特殊逻辑.
我们如何在编译时加载程序集而不是这样做
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();
}
Run Code Online (Sandbox Code Playgroud)