具有其他类型的容器列表的通用容器

时间:2019-06-06 13:18:51

标签: c# generics

我正在尝试建立一个像树一样的数据结构,其中每个节点都有另一个参数化类型的节点列表。

例如

node < Aclass >有一个名为list < node < Bclass > >的列表,列表中的每个node< Bclass >都有另一种类型的列表。

数据:Aclass和Bclass之间没有继承。

我的代码存在的问题是,如果我没有在像<T,S>这样的容器中定义S,就不能将S作为泛型使用

public class Container < T > 
{
    private T _data;
    private List < Container < S >  >  list;
    private Translator < T, S >  _translator;
    public Container(T data, Translator < T, S >  translator)
    {
        _translator = translator;
        list.Add(translator.Translate(data));
    }
}

public abstract class Translator < T, S > 
{
    public abstract S Translate(T rawData);
}

class TranslatorDefinition : Translator < A, B > 
{ // where A,B are classes in my project
    public override B Translate(A rawData)
    {
        throw new NotImplementedException();
    }
} 

这是树的外观示例,其中A,B,C是类

1 Node <  A  >   
 1.1 Node <  A  >   
  1.1.1 Node <  B  >   
  1.1.2 Node <  B  >   
   1.1.2.1 Node <  C  >   
 1.2 Node <  A  >   
  1.2.1 Node <  A  >   
 1.3 Node <  A  > 

另外一种实现它的方法也很棒:)

谢谢

0 个答案:

没有答案