繁体   English   中英

使用继承的类作为参数类型覆盖抽象方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM