当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中为类动态添加字段?

如何解决《如何在C#中为类动态添加字段?》经验,为你挑选了3个好方法。

有没有办法在运行时添加Field(或者FieldInfo,可能是相同的)类?



1> Mehrdad Afsh..:

您无法在运行时更改类定义.但是,您可以创建一个继承自原始类的新类(如果不是sealed)并声明该字段.您可以通过使用发出适当的IL代码来完成此操作System.Reflection.Emit.



2> JaredPar..:

C#不允许它,因为它的所有类都基于元数据.的CLR(未C#)不允许字段的在运行时添加到元数据(1).这是C#能够在runitme添加字段的唯一方法.

这与IronPython等动态语言不同,后者基本上没有具体的元数据类.它们具有更多动态结构,可以在运行时更改.我相信IronPython只是将它的成员(字段和方法)保留在可以在运行时轻松更改的哈希表中.

在C#3.0中,您最好的资源是使用Reflection.Emit.但是这会产生一个全新的类而不是改变现有的类.

(1)某些API(例如分析API或ENC)允许这样做,但我不确定它们的功能是否扩展到添加字段.



3> Greg Beech..:

不,C#不允许猴子修补.

您可以使用CodeDOM或Reflection.Emit 生成类,但不能修改现有类.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有