从程序集中获取隐式实例化的泛型类型?

我正在尝试使用C#反射从程序集中检索所有类型(比如说:从“ ExecutingAssembly”中检索),我可以检索所有明确地定义的类型,包括通用类型I在装配中定义。但是我似乎无法检索隐式实例化的泛型类型(具体版本)。

例如,var types = Assembly.GetExecutingAssembly().GetTypes();将检索所有明确定义的类型(类,在此程序集中定义的结构,包括通用类型,例如class MyGenericClass<T>

但是,在同一程序集中,我实际上在代码中使用MyGenericClass<int>作为 concrete 类型来实际实例化 objects (例如:{{1 }}),但上面的代码似乎无法检索这种具体 MyGenericClass<int> myobject;类型。

我想知道是否可以从程序集中检索任何实例化的生成类型,因此以后我可能会使用该类型来执行一些代码生成工作。

如果无法检索,有什么设计建议?

提前谢谢!

jyw114 回答:从程序集中获取隐式实例化的泛型类型?

反射基于程序集的元数据。您似乎想要的是需要进行某种源代码检查,以找出运行时创建的所有具体泛型类型。可能?是的,编译器可以这样做,但不能通过反射来实现。

,

这不是您要追求的,但是您可以更深入地了解所有类型的所有方法,并收集所有返回类型和所有参数的类型。

请清楚一点,这与您的任务所需的代码分析完全不同。这只会为您提供更多信息。

本文链接:https://www.f2er.com/3159998.html

大家都在问