如何检索.NET运行时生成的所有已关闭generics类型的列表?

根据MSDN文档,.NET运行时将根据需要动态生成基于generics类型定义的封闭类型。

https://msdn.microsoft.com/en-us/library/f4a6ta2h.aspx

是否可以检索与运行时生成的闭合类型相对应的System.Type实例的集合?

使用静态构造函数动态构建列表。 这不是线程安全的,但是当静态构造函数在首次创建每个关闭类型后立即运行时,会发生唯一的线程争用,因此这可能不是问题,具体取决于代码的构造方式。

即如果您对这些generics类型的所有初始访问都发生在一个线程中,那么您无需担心。

静态构造函数为每个创建的闭合类型运行一次。 创建闭合类型并运行静态构造函数时,可以将类型存储在静态非generics列表变量中。 (您不能使用通用静态,或者每个封闭类型都有一个单独的列表)

 public class MyStaticClass { public static List ClosedTypes = new List(); } public class MyGenericType { static MyGenericType() { MyStaticClass.ClosedTypes.Add(typeof(MyGenericType)); } }