【发布时间】:2014-09-04 00:52:22
【问题描述】:
这个问题听起来比实际上要复杂。我在下面有一个简化的例子。粉红色突出显示两个类别之间的差异。如您所见,唯一真正的区别在于使用的枚举类型。所有其他代码都是相同的。有没有办法使用继承和/或模板在我的整个代码库中只有一个 GetTrialType() 方法?我在这个例子中展示了两个派生类(NBACK 和 COLOR),但实际上有数百个派生自 Task 类的类。这意味着如果我必须对 GetTrialType() 方法进行一次更改,我实际上将不得不进行 100 次更新。我怎样才能防止这种情况(当使用不同的类型时)?
【问题讨论】:
-
您的代码是如何工作的?
trialTypes(trial)怎么知道返回什么类型? -
当两者的选项相同时,为什么要为枚举提供差异名称?
-
@Zache:希望了解更多关于您的解决方案的信息。基类是否允许您使用模板类型创建成员变量?它是否允许您创建未在基类中实现但仅在派生类中实现的方法?
-
@nvoigt: trialTypes[trial] 只是一个 Dictionary,它是派生类的私有成员变量。
-
@Patel:有时他们有不同的选择。有时它们具有相同的选项,但值不同。
标签: c# templates inheritance types enums