微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决除了使用 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 举报,一经查实,本站将立刻删除。