这个问题可能被问了数百次,但又被问了一次:.NET中是否存在类加载器的概念。让我详细说明这个问题:我不想在一个类中注入几个额外的代码项,以便能够将该类的对象插入到要开发的框架中。
在Java中,我使用一个类加载器来实现这一点,该类加载器读取字节码,应用必要的修改,并将类作为类型实例提供给应用程序。现在,可以通过反射的方式创建对象。
通过反射的方式,这在.NET中肯定也是可能的。因此,使用Type::GetType()调用当前AppDomain实例的TypeResolver。在解析器中,加载原始类型,然后将其用作在动态程序集中创建的派生类型的基类。这有点棘手,因为派生类型不在同一个程序集中,所以内部类不容易处理。但它是可行且稳定的。
现在,称我为一个迂腐的德国人,我加载了原始类型和派生类型,而在Java中,我只加载了修改后的类型。我也能在.NET中实现这一功能吗?
为了做一些家务,这就是问题的症结所在。
事实上,我鄙视在加载时更改现有类的方法。从.NET的角度来看,将所有者设置为要扩展的类型的DynamicMethod就可以做到这一点。但是,您不能以这种方式添加数据对象——如果这是一种要求,您需要通过Reflection.TypeBuilder派生自己的类。这两个概念在.Net Standard(以前的PCL)中都不可用。
如果您有类似的需求,我强烈建议您联系DLR(动态元对象)——这是我最终开始使用的概念。