这个问题听起来比实际上更复杂。我在下面有一个简化的例子。粉红色突出显示两个班级之间的差异。如您所见,唯一真正的区别在于使用的枚举类型。所有其他代码都是相同的。有没有办法使用继承和/或模板在我的整个代码库中只有一个GetTrialType()方法?我在这个例子中显示了两个派生类(NBACK和COLOR),但实际上有几百个派生自Task类的类。这意味着如果我必须对GetTrialType()方法进行一次更改,我实际上必须进行100次更新。如何防止这种情况(使用不同类型时)?
答案 0 :(得分:0)
您可以简单地使用int而不是该字典中的枚举。在派生类中,每次向trialTypes
添加任何类型时都必须将其强制转换为int,而每次通过调用GetTrialType
得到类型时,都必须将其强制转换为枚举类型。在您的Task类中,您可以:
private Dictionary<int, int> trialTypes;
protected int GetTrialType(int trial)
{
try
{
return trialTypes[trial];
}
catch (Exception ex)
{
// your logging ...
}
return 0;
}
protected void AddTrialType(int trial, int type)
{
trialTypes.Add(trial, type);
}