除了使用 switch 创建实例之外,如何从不同的子类动态调用方法?

问题描述

我有一个运行不同调查的数据库驱动应用程序。每个调查的大多数行为都是相似的,可以使用通用模式表示。但有时,我希望有一些特殊的代码来实现特定调查的某些功能

现在,这是这样做的:

switch (SurveyId.ToLower())
{
    case "surveya":
        _testModule = new SurveyA(this);
        await _testModule.Init();
        break;
    case "surveyb":
        _testModule = new SurveyB(this);
        await _testModule.Init();
        break;
    default:
        break;
}

所以基本上是通过一个开关来识别异常。

在这代码的后面,我调用_testModule 类上的一些方法

我知道我可以通过覆盖基本实现来做到这一点。然后我不会有这个开关,但我会调用标准方法,并在派生类中覆盖它。但这意味着相同的开关出现在更高级别,调用覆盖基类而不是基类本身的类。基本上,它只会在堆栈中移动这个开关,但不会降低复杂性。

在 Web API 代码中的其他点,继承似乎根本没有帮助,我认为除了这个切换之外别无他法。

那么处理这个问题的最佳方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)