我正在进入泛型,我有一个问题,即决定哪种方法更适合让泛型类包含一个通用列表,该列表与包含类的类型不同。
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;的最佳方式是什么?在列表中可以是包含类的不同类型吗?
由于
答案 0 :(得分:1)
唯一的通用解决方案是显式声明第二个泛型类型。
public class Goal<T, TChild>
{
public T value { get; set; }
public List<TChild> MyListWithAnotherType { get; set; }
}
但是,由于您以递归方式使用此类(在Goal<U>
内引用Goal<T>
),因此无法实现。如果你试图这样做,你会发现它需要你提供一个无限的泛型类型参数链,因为你总是需要指定子目标的类型,这是一个无休止的序列(每个孩子都有自己的孩子,等等......)
这无法以您想要的方式解决。但是通过更复杂的问题描述,可能会有不同的方法来解决您的问题。