包含不同类型的通用列表的泛型类

时间:2018-06-07 11:44:23

标签: c#

我正在进入泛型,我有一个问题,即决定哪种方法更适合让泛型类包含一个通用列表,该列表与包含类的类型不同。

public class Goal<T>
{
    public string Name { get; set; }
    public int Priority { get; set; }
    public List<Goal<T>> Dependencies { get; set; }
    public T Value { get; set; }

    public Goal(string name, int priority, T val)
    {
        Name = name;
        Priority = priority;
        Value = val;
        Dependencies = new List<Goal<T>>();
    }
}

拥有&#39;依赖关系&#39;的最佳方式是什么?在列表中可以是包含类的不同类型吗?

由于

1 个答案:

答案 0 :(得分:1)

唯一的通用解决方案是显式声明第二个泛型类型。

public class Goal<T, TChild>
{
    public T value { get; set; }
    public List<TChild> MyListWithAnotherType { get; set; }
}

但是,由于您以递归方式使用此类(在Goal<U>内引用Goal<T>),因此无法实现。如果你试图这样做,你会发现它需要你提供一个无限的泛型类型参数链,因为你总是需要指定子目标的类型,这是一个无休止的序列(每个孩子都有自己的孩子,等等......)

这无法以您想要的方式解决。但是通过更复杂的问题描述,可能会有不同的方法来解决您的问题。