Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 抽象类中的泛型方法_C#_Generics_Abstract Class - Fatal编程技术网

C# 抽象类中的泛型方法

C# 抽象类中的泛型方法,c#,generics,abstract-class,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)

我有以下抽象基类,其中有一个抽象方法。我需要知道如何在子类中实现这个抽象方法。问题是如何在类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();
    }
}
公共抽象类A
{
受保护的抽象空添加(T编号),其中T:SomeBaseClass;
}
B级:A级
{
受保护覆盖无效添加(T编号)
{
抛出新的NotImplementedException();
}
}

我认为您希望基类具有类型参数,而不是特定方法:

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

public class B : A<C> {

    protected void Add(C number) { ... }
}
公共抽象类A,其中T:SomeBaseClass
{
受保护的摘要无效添加(T编号);
}
B级:A级{
受保护的无效添加(C编号){…}
}

请您对类而不是方法实现约束。感谢您的回复。但是有没有办法在不改变类A的情况下实现它?@stech,如果你想让子类控制类型参数,那么类型参数属于类。如果希望方法的调用者控制类型参数,则类型参数属于该方法。否-不能将方法的类型参数约束在从该方法的包含类派生的类中。这将是对方法签名的更改。