c# - 从程序集中获取隐式实例化的泛型类型?
问题描述
我正在尝试使用 C# 反射从程序集中检索所有类型(比方说:从“ExecutingAssembly”),我可以检索所有显式定义的类型,包括我在程序集中定义的泛型类型。但我似乎无法检索隐式实例化的泛型类型(具体版本)。
例如,var types = Assembly.GetExecutingAssembly().GetTypes();
这将检索所有显式定义的类型(在此程序集中定义的类、结构,包括通用类型,例如class MyGenericClass<T>
)。
但是,在同一个程序集中,我实际上在我的代码中使用MyGenericClass<int>
作为具体类型来实际实例化对象(例如:),但是上面的代码似乎无法检索到MyGenericClass<int> myObject;
这种具体类型。 MyGenericClass<int>
我想知道是否任何实例化的生成类型实际上都可以从程序集中检索,所以我以后可能会使用该类型进行一些代码生成工作。
如果它们不可检索,有什么设计建议吗?
先感谢您!
解决方案
反射基于程序集的元数据。您似乎想要的需要涉及某种源代码检查,以找出在运行时创建的所有具体泛型类型。可能的?是的,编译器做到了,但没有反射。
推荐阅读
- firefox-os - Firefox OS - 在 Firefox OS 应用程序内启动外部链接并检索其内容
- java - 带有消息选择器但没有消费者但使用 Solace Gui 的 Solace Queue
- javascript - .sort 方法不起作用,任何提示为什么会这样?
- regex - 删除 Google 表格中最后一个“/”之后的所有内容
- django - Django - 验证 ModelForm 时是否需要检查 IntegrityErrors?
- javascript - 完整的日历 selectAllow 在 ReactJS 中不起作用
- c# - 如何将数据库逻辑从我的 Asp.Net MVC 应用程序传输到 ASP.Net Core MVC?
- java - 如何在java中进行URL通配符匹配?
- docker - 如何在 github 操作服务容器中运行命令?
- python - 解析“conda”、“sudo”和“全局”python 路径