在C#中继承带有泛型参数的方法时,处理子类中实际不需要参数的情况的最佳方法是什么?例如,我想做这样的事情:
public abstract class Parent {
protected abstract void Load<T>(T param);
}
public class Child : Parent {
protected override void Load() {}
}
如果这样的事情不可能,在没有实际需要的情况下,是否有建议的标准做法来指定T?我只是设置为像bool这样的东西并忽略它的价值吗?
child.Load<bool>(false);
答案 0 :(得分:2)
覆盖函数时,必须保留相同数量(和类型)的参数。您可以重载父方法,但不能覆盖它:
public abstract class Parent {
protected abstract void Load<T>(T param);
}
public class Child : Parent {
protected void Load() {}
protected override void Load<T>(T param) { // do nothing? }
}
然而,这对我来说是一个代码味道 - 使Load<T>
抽象实质上告诉实现者他们必须实现此方法,但是这个类认为它不需要这样做。如果Parent
中的代码要求Load<T>
被正确覆盖;如何知道Child
实现了Load
的其他一些风格?