如果我有一个泛型类:
public class MyClass<T>
{
public T Value;
}
Run Code Online (Sandbox Code Playgroud)
我想实例化几个项目,如...
new MyClass<string>
new MyClass<int>
Run Code Online (Sandbox Code Playgroud)
...并将它们添加到集合中.如何定义集合以便它可以包含泛型类型列表?然后我想在某个时刻迭代集合,并使用Value属性.可能?
public abstract Column<T>
{
private T Value {get;set;}
public abstract string Format();
}
public class DateColumn : Column<DateTime>
{
public override string Format()
{
return Value.ToString("dd-MMM-yyyy");
}
}
public class NumberColumn : Column<decimal>
{
public override string Format()
{
return Value.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是将这些添加到通用集合中.我知道它可能,但我怎样才能在集合中存储多种类型等
IList<Column<?>> columns = new List<Column<?>()
Run Code Online (Sandbox Code Playgroud)
我真的很感激有关实现这一目标的任何建议.目标是将不同的列类型存储在同一个List中.值得一提的是我使用NHibernate和鉴别器来加载适当的对象.最后,Value需要具有类的类型.
非常感谢您的帮助.
我实现了以下分层数据结构:Tree <T>→Branch <T>→T.
更新:很多人问:为什么不使用对象代替<T>(或<dynamic>或其他)?所以我修改了我的问题来陈述我的"约束".开始了...
这是一个例子Tree:
*
??Negative
? ??-2
??0
? ??0
??Positive
? ??2
? ??12
? ??2147483647
*
??Spring
? ??Mar
? ??Apr
? ??May
??Summer
? ??Jun
? ??Jul
? ??Aug
??Fall
? ??Sep
? ??Oct
? ??Nov
??Winter
? ??Dec
? ??Jan
? ??Feb
Run Code Online (Sandbox Code Playgroud)
在C#中实现:
public class Tree<T>
{
public readonly List<Branch<T>> Branches = new List<Branch<T>>();
}
public class Branch<T>
{
public readonly List<T> Leaves = new List<T>();
public string Name { …Run Code Online (Sandbox Code Playgroud)