在Reflection.Emitting时引用现有属性

本文关键字:属性 引用 Reflection Emitting | 更新日期: 2023-09-27 18:13:44

所以在这里我试图使用System.Reflection.Emit从现有的类生成一个新的类。基本上,我想从这个现有类中获取所有公共属性和字段,并将它们拍打到我的新动态创建的类中。到目前为止还不错,但现在现有类的一些字段正在用System.Xml.Serialization汇编中定义的属性进行装饰,我非常想在我的新字段上也有。

然而,我不确定我应该如何进行。我想我应该在我的FieldBuilder实例上调用SetCustomAttribute,但是这个方法需要一个CustomAttributeBuilder,我不知道如何正确地实例化它,让它引用真实属性……此外,我还希望在我的新类中保留现有的属性参数。

tl;dr只是试图将属性从现有的类复制到通过Reflection.Emit创建的新类。

在Reflection.Emitting时引用现有属性

您可以使用CustomAttributeBuilder的一个构造函数来实例化该类。

使用MemberInfo.GetCustomAttributesData来检索关于现有自定义属性的元数据。与MemberInfo.GetCustomAttributes相反,这个API不实例化属性类。相反,它返回原始元数据。