【发布时间】:2008-10-24 15:22:52
【问题描述】:
我需要在运行时创建使用泛型的类的实例,例如 class<T>,但之前不知道它们将拥有的类型 T,我想做这样的事情:
public Dictionary<Type, object> GenerateLists(List<Type> types)
{
Dictionary<Type, object> lists = new Dictionary<Type, object>();
foreach (Type type in types)
{
lists.Add(type, new List<type>()); /* this new List<type>() doesn't work */
}
return lists;
}
...但我做不到。我认为不可能在泛型括号内用 C# 编写类型变量。还有其他方法吗?
【问题讨论】:
-
您能说明为什么要在运行时创建类型安全的通用对象吗?
-
我已经做过好几次了,尤其是在移植协议缓冲区时。
-
我正在为我的工作中的持久性框架做一个适配器,类需要这些信息来执行它们的工作。