为什么`Assembly`和`Module`没有公开定义的构造函数?我正在用C#构建一个.NET程序集加载器以进行“实验”/了解有关.NET内部结构的更多信息。我通过派生类型来实现reflectionAPI:不幸的是我遇到了麻烦,因为以下没有可公开访问的构造函数,所以我无法从它们派生:我需要从RuntimeType.get_Assembly和RuntimeType.get_Module返回一些东西。建议?发挥创意——我必须这样做。;)对于创建RuntimeTypeHandle的实例,一些不安全的指针转换可以完成工作,但这并不容易。撇开:现在特别麻烦的是我正在尝试为负载类型打印IL。对于构造的泛型,Type.FullName属性通过AssemblyQualifiedName属性包含泛型参数,而AssemblyQualifiedName属性依赖于Assembly属性。为什么你不能从他们那里得到它?两种类型(程序集和模块)都有一个可用于派生类型的受保护构造函数。类型本身是公共的,所以没有问题,它没有实际的说明符那么明显。下面的代码编译得很好publicclassMyAssembly:System.Reflection.Assembly{publicMyAssembly():base(){}}至于为什么他们没有任何公共构造函数。我对此没有任何直接了解,但很明显他们想强迫人们从这些课程中学习。考虑到它们没有抽象成员,这似乎很奇怪。我唯一能想到的是版本问题,但现在没有任何逻辑跳到我的脑海里。编辑阅读280Z28的评论后,我检查了一下,是的,这是.Net4.0中的一项新功能。在4.0之前,Assembly和Module的构造函数都是内部的,这两种类型都是具体的但不是密封的。所以在4.0之前做推导是不可能不对完全可信的代码做些坏事的。以上是C#学习教程:为什么`Assembly`和`Module`没有公开定义的构造函数?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
