[英]Overriding abstract method with the inherited class as parameter type
我有一个像这样的抽象类:
public abstract class BaseClass
{
...
public abstract void MyMethod<T>(T value);
}
在继承的类中,我想将类本身的类型作为参数T传递,因此我尝试这样做:
public class InheritedClass: BaseClass
{
...
public override void MyMethod<InheritedClass>(InheritedClass value)
{
...
}
}
但是intellisense警告我“类型参数InheritedClass隐藏类Inherited class”
此消息的确切含义是什么? 还有其他方法可以做到这一点吗?
该错误是因为您的方法正在创建与该类同名的泛型类型。 只能在调用方法时定义方法的泛型类型。
实现此目的的唯一方法是在类上定义泛型,以便在继承时可以指定它。
public abstract class BaseClass<T>
{
public abstract void MyMethod(T value);
}
public class InheritedClass: BaseClass<InheritedClass>
{
public override void MyMethod(InheritedClass value)
{
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.