首页 > 解决方案 > 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 {...}

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

标签: c#generics

解决方案


您快到了。此声明中有三个类型参数,但您只在MetaHeap<>大括号中放置了两个并忘记了T3

public class MetaHeap<T1,T2,T3> : AbstractHeap<T1> 
    where T2 : AbstractHeap<T3> 
    where T3 : MyAbstractType {...}

推荐阅读