抽象类中的泛型方法

ste*_*ech 7 c# generics abstract-class

我有以下抽象基类,其中我有一个抽象方法.我需要知道如何在子类中实现这个抽象方法.问题是如何在B类中声明一个基类为SomeBaseClass的类.

public abstract class A
{
    protected abstract void Add<T>(T number) where T : SomeBaseClass;
}

public class B : A
{
    protected override void Add<T>(T number)
    {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ain 10

我想你希望基类有一个类型参数,而不是一个特定的方法:

public abstract class A<T> where T : SomeBaseClass
{
    protected abstract void Add(T number);
}

public class B : A<C> {

    protected void Add(C number) { ... }
}
Run Code Online (Sandbox Code Playgroud)

  • @stech,如果您希望子类控制类型参数,则类型参数属于该类.如果希望方法的*callers*控制类型参数,则类型参数属于该方法. (3认同)