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

时间:2018-05-16 18:18:00

标签: c# inheritance abstract-class

我有一个这样的抽象类:

FORMS

在继承的类中,我想将类本身的类型作为参数T传递,所以我尝试这样做:

return {
    // loaded, loading…
    results: {
        ...state.results,
        FORMS: state.results.FORMS.map(
            item => item.id === form.id ? {
                ...item,
                categories: form.categories,
            } : item,
        ),
    },
}

但intellisense警告我'Type parameter InheritedClass隐藏类Inherited class'

这条消息究竟意味着什么?还有其他方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:1)

错误是因为您的方法正在创建一个与该类同名的泛型类型。只有在调用方法时,才能为方法指定泛型类型。

实现这一目标的唯一方法是在类上定义泛型类型,以便在继承时指定它。

public abstract class BaseClass<T>
{
    public abstract void MyMethod(T value);
}

public class InheritedClass: BaseClass<InheritedClass>
{
    public override void MyMethod(InheritedClass value)
    {
    }
}