根据MSDN文档,. net运行时将根据需要动态生成基于泛型类型定义的封闭类型。
https://msdn.microsoft.com/en-us/library/f4a6ta2h.aspx是否有可能检索与这些运行时生成的封闭类型相对应的System.Type
实例集合?
使用静态构造函数动态构建列表。这不是线程安全的,但是唯一的线程争用发生在静态构造函数在每个封闭类型第一次创建之后运行时,所以这可能不是一个问题,取决于您的代码是如何构造的。
。如果你对这些泛型类型的所有初始访问都发生在一个线程中,你就没有什么可担心的了。
静态构造函数为每个创建的封闭类型运行一次。当创建封闭类型并运行静态构造函数时,可以将该类型存储在静态非泛型列表变量中。(不能使用泛型静态类型,否则每个封闭类型都将有一个单独的列表)
public class MyStaticClass
{
public static List<Type> ClosedTypes = new List<Type>();
}
public class MyGenericType<T>
{
static MyGenericType()
{
MyStaticClass.ClosedTypes.Add(typeof(MyGenericType<T>));
}
}