我正在尝试使用C#反射从程序集中检索所有类型(比方说:从“ ExecutingAssembly”),我可以检索所有explicitly定义的类型,包括我在程序集中定义的通用类型。但是我似乎无法检索implicitly实例化的泛型类型(具体版本)。
例如,var types = Assembly.GetExecutingAssembly().GetTypes();
这将检索所有显式定义的类型(类,在此程序集中定义的结构,包括通用的类型,例如class MyGenericClass<T>
)。
但是,在同一程序集中,我实际上在代码中使用MyGenericClass<int>
作为concrete类型来实际实例化objects(例如:MyGenericClass<int> myObject;
),但是此concrete上面的代码似乎无法检索到MyGenericClass<int>
类型。
我想知道是否实际上可以从程序集中检索任何实例化的生成类型,因此以后我可能会使用该类型来执行一些代码生成工作。
如果无法检索,有任何设计建议吗?
谢谢您!
元数据。您似乎想要的是需要进行某种source code检查,以找出运行时创建的所有具体泛型类型。可能?是的,编译器可以执行此操作,但不能进行反射。
只需清楚一点,这与您的任务所需的代码分析完全不同。这只会为您提供更多信息。