【发布时间】:2011-01-22 22:35:05
【问题描述】:
使用 Reflection.Emit 库与 CodeDOM 在运行时动态生成代码有哪些优缺点?
我正在尝试根据运行时以 XML 形式提供的元数据在系统中生成一些(相对复杂的)动态类。我将生成扩展应用程序集中现有类的类,实现额外的接口,添加方法,并覆盖虚拟和抽象成员。
我想确保在深入实施之前选择合适的技术。任何有关这些不同代码生成技术有何不同的信息都会有所帮助。此外,任何有关简化或简化使用任一 API 的开源库的信息也会很有用。
【问题讨论】:
-
在阅读本文时,NHibernate 是第一个跳入我脑海的东西。值得看看他们是如何做到的吗?
-
其实我在看那个。他们使用 Reflection.Emit,但不清楚为什么他们选择了与 CodeDOM 相比。
-
今天最大的不同是
CSharpCodeProviderAPI 仅在 .NET Core 3.0 及更高版本中可用。它们甚至不是 .NET Standard 的一部分(与Reflection.Emit不同)
标签: c# .net code-generation reflection.emit codedom