使用包含Type </t>的变量创建Generic <t>类型实例

时间:2010-01-16 21:07:33

标签: c# generics types instance

是否可以实现以下代码?我知道它不起作用,但我想知道是否有解决方法?

Type k = typeof(double);
List<k> lst = new List<k>();

3 个答案:

答案 0 :(得分:115)

是的,有:

var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);

答案 1 :(得分:3)

更简洁的方法可能是使用通用方法。做这样的事情:

static void AddType<T>()
    where T : DataObject
{
    Indexes.Add(typeof(T), new Dictionary<int, T>());
}

答案 2 :(得分:-2)

试试这个:

var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);