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

本文关键字:泛型方法 参数 何继承 继承 | 更新日期: 2023-09-27 18:27:34

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

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

重写函数时,必须保持相同数量(和类型)的参数。您可以重载父方法,但不能覆盖它:

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