首页 > 解决方案 > 从程序集中获取隐式实例化的泛型类型?

问题描述

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

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

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

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

如果它们不可检索,有什么设计建议吗?

先感谢您!

标签: c#genericsreflection.net-assembly

解决方案


反射基于程序集的元数据。您似乎想要的需要涉及某种源代码检查,以找出在运行时创建的所有具体泛型类型。可能的?是的,编译器做到了,但没有反射。


推荐阅读