0

这个问题可能被问了数百次,但又问了一遍:.NET 中是否存在类加载器的概念。让我详细说明一下这个问题:我不想在一个类中注入几个额外的代码项,以便能够将这个类的对象插入要开发的框架中。

在 Java 中,我使用读取字节码的类加载器来执行此操作,应用必要的修改并将类作为类型实例提供给应用程序。现在,可以通过反射的方式创建对象。

通过反射的方式,这在 .NET 中也肯定是可能的。因此,使用 Type::GetType() 调用当前 AppDomain 实例的 TypeResolver。在解析器中,加载原始类型,然后将其用作在动态程序集中创建的派生类型的基类。这有点棘手,因为派生类型不在同一个程序集中,因此内部类并不容易处理。但它是可行且稳定的。

现在,称我为迂腐的德国人,我加载了原始类型和派生类型,而在 Java 中我只有修改后的类型。我是否也可以在 .NET 中完成这项工作?

4

1 回答 1

0

为了在这里做一些家务,这就是问题所在。

事实上,我鄙视在加载时更改现有类的方法。从 .NET 的角度来看,将所有者设置为要扩展的类型的 DynamicMethod 可以解决问题。但是,您不能以这种方式添加数据对象——如果这是必需的,您需要通过 Reflection.TypeBuilder 派生您自己的类。这两个概念在 .Net Standard(前 PCL)中都不可用。

如果您有类似的要求,我强烈建议您联系 DLR(动态元对象)——这是我最终开始使用的概念。

于 2018-06-24T07:43:19.487 回答