C#如何继承具有不同数量的必需参数的泛型方法

时间:2014-10-23 20:37:32

标签: c# generics inheritance parameters polymorphism

在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);

1 个答案:

答案 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的其他一些风格?