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

问题描述 投票:0回答:2

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

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

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

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

如果无法检索,有任何设计建议吗?

谢谢您!

c# generics reflection .net-assembly
2个回答
0
投票
反射基于组件的

元数据。您似乎想要的是需要进行某种source code检查,以找出运行时创建的所有具体泛型类型。可能?是的,编译器可以执行此操作,但不能进行反射。


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

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

© www.soinside.com 2019 - 2024. All rights reserved.