C# C语言中的双泛型类型#

C# C语言中的双泛型类型#,c#,generics,C#,Generics,我是C#新手,很抱歉问了语法问题,但我在任何地方都找不到答案。我正在尝试使用以下类型架构创建一个类型 public abstract class MyAbstractType {...} public class MyFirstType : MyAbstractType {...} public class MySecondType : MyAbstractType {...} public abstract class AbstractHeap<T> {...} public c

我是C#新手,很抱歉问了语法问题,但我在任何地方都找不到答案。我正在尝试使用以下类型架构创建一个类型

public abstract class MyAbstractType {...}
public class MyFirstType : MyAbstractType {...}
public class MySecondType : MyAbstractType {...}

public abstract class AbstractHeap<T> {...}
public class MyFirstHeap : AbstractHeap<MyFirstType> {...}
public class MySecondHeap : AbstractHeap<MySecondHeap> {...}

public class MetaHeap<T1,T2> : AbstractHeap<T1> where T2 : AbstractHeap<T3> where T3 : MyAbstractType {...}
公共抽象类MyAbstractType{…}
公共类MyFirstType:MyAbstractType{…}
公共类MySecondType:MyAbstractType{…}
公共抽象类AbstractHeap{…}
公共类MyFirstHeap:AbstractHeap{…}
公共类MySecondHeap:AbstractHeap{…}
公共类元堆:AbstractHeap其中T2:AbstractHeap其中T3:MyAbstractType{…}

最后一个定义给了我问题。这只是一个语法问题,我没有意识到,还是这种结构在C#中是不允许的?

你就快到了。此声明中有三个类型参数,但您在
元堆中只放了两个
大括号,而忘记了
T3

公共类元堆:抽象堆
其中T2:AbstractHeap
其中T3:MyAbstractType{…}

是否愿意实际显示这一行给出的“问题”是什么(在语法上似乎完全正确)?您需要在
类元堆中指定T3,并且您可能只需要较少的泛型参数。这里的实际问题是什么?谢谢!如果我指定T3,它就可以工作。我正在尝试在T1上创建一个有序的堆,其中子堆在T3上有序。啊。。哎呀。谢谢