【发布时间】:2010-11-16 02:11:45
【问题描述】:
我正在用 C# 构建一个 .NET 程序集加载器,用于“实验”/了解有关 .NET 内部操作的更多信息。我通过派生以下类型实现了反射 API:
- RuntimeType : 类型
- RuntimeFieldInfo : FieldInfo
- RuntimeMethodInfo : MethodInfo
- 运行时参数信息:参数信息
- RuntimeConstructorInfo : ConstructorInfo
- RuntimePropertyInfo : PropertyInfo
不幸的是,我遇到了麻烦,因为以下没有可公开访问的构造函数,所以我无法从它们派生:
- 程序集(未密封 - AssemblyBuilder 内部派生自它)
- 模块(未密封 - ModuleBuilder 内部派生自它)
我需要从RuntimeType.get_Assembly 和RuntimeType.get_Module 返回一些东西。建议?发挥创意——我不得不这样做。 ;) 对于创建 RuntimeTypeHandle 实例,一些不安全的指针转换可以完成工作,但在这里并不那么容易。
顺便说一句:现在特别麻烦的是我正在尝试为加载的类型漂亮地打印 IL。对于构造的泛型,Type.FullName 属性通过AssemblyQualifiedName 属性包含泛型参数,而后者又依赖于Assembly 属性。
【问题讨论】:
标签: c# .net reflection