c# – 通用类型的集合

如果我有一个泛型类:

public class MyClass<T> 
{
  public T Value;
}

我想实例化几个项目,如…

new MyClass<string>
new MyClass<int>

…并将它们添加到集合中。如何定义集合以便它可以容纳一般类型的列表?然后我想在某个时间点遍历集合,并使用Value属性。可能?

让你的泛型类从一个非泛型的基础继承,或者实现非通用接口。然后,您可以使用此类型的集合,并在用于访问集合内容的任何代码中投射。

这是一个例子。

public abstract class MyClass
{
    public abstract Type Type { get; }
}

public class MyClass<T> : MyClass
{
    public override Type Type
    {
        get { return typeof(T); }
    }

    public T Value { get; set; }
}

// VERY basic illustration of how you might construct a collection
// of MyClass<T> objects.
public class MyClassCollection
{
    private Dictionary<Type, MyClass> _dictionary;

    public MyClassCollection()
    {
        _dictionary = new Dictionary<Type, MyClass>();
    }

    public void Put<T>(MyClass<T> item)
    {
        _dictionary[typeof(T)] = item;
    }

    public MyClass<T> Get<T>()
    {
        return _dictionary[typeof(T)] as MyClass<T>;
    }
}
http://stackoverflow.com/questions/3215402/collection-of-generic-types

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 通用类型的集合