C# 反射 : Emitting classes to existing assemblies

标签 c# reflection.emit

是否可以使用 Reflection.Emit 在现有程序集中创建类型,或者您是否需要定义一个新的动态程序集才能包含动态类型?

基本上,我打算读入一个 XML 定义文件,该文件定义了一个类,然后多次实例化该类并使用其他几个 XML 文件中的数据进行填充。冲洗并重复几个文件夹(每个文件夹都有不同的定义文件)。

我还打算使用这些数据来动态构建我的应用程序的界面,以及在将数据重新保存到 XML 文件时定义数据的格式。

最佳答案

使用 Reflection.Emit 时,您必须始终创建一个新程序集。

但是,一种可能的选择是采用您现有的程序集,并将契约定义为接口(interface)。您可以在运行时使用 Reflection.Emit 创建新程序集,并让它定义实现您的接口(interface)的类型。您的程序集可以使用 factory pattern实例化属性、动态生成的类型,并返回您的(在编译时已知的)接口(interface)的实现。

关于C# 反射 : Emitting classes to existing assemblies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2114501/

相关文章:

c# - 使用反射创建类型时出现问题

c# - 动态创建类型的性能

c# - 当另一个类中的先决条件属性发生更改时,为依赖属性提高 PropertyChanged?

c# - 调用 Bitmap.GetHicon 时 GDI+ 中发生一般错误

c# - 从窗口句柄获取窗口实例

c# - 快速创建对象而不是 Activator.CreateInstance(type)

c# - 为什么 ILGenerator 在 Foreach 语句中插入 Leave 指令

.net - 鉴于我手头有所需的 MethodInfo 和实例类型,如何使用 OpCodes.Callvirt 发出 OpCodes.Constrained

c# - Etsy oauth 身份验证 c# RestSharp

c# - 重定向到隐藏查询字符串参数的页面asp.net