我正在开发一个需要非常可扩展的项目。它是关于基于字符串代码或枚举值执行操作。我现在正在使用 switch-case 语句并手动调用这些方法。
我想做的是遍历数据库记录(并最终获得枚举值或字符串代码),调用方法“PerformAction”并使其可以稍后实现类或方法。
public bool PerformAction(ActionToPerform actionToPerform)
{
bool isPerformed = false;
switch (actionToPerform.Action.Code)
{
case "MAIL":
isPerformed = Actions.SendEmail(actionToPerform);
break;
case "RESTART":
isPerformed = Actions.RestartSendport();
break;
case "EVENT-LOG":
isPerformed = Actions.AddToEventLog();
break;
}
//Do some more
return isPerformed;
}
我希望以后能够实现 SendEmail、RestartSendport 和 AddToEventLog 等操作。我知道这可以以某种方式使用反射来完成,并为方法提供代码的名称(例如“MAIL.cs”),这样我就可以避免使用开关盒并执行一次调用。
我需要它是非常动态的并且在另一个库中,所以我想知道对于这类问题是否有最佳实践或好的设计模式。