如何获取当前类的字段

本文关键字:字段 何获取 获取 | 更新日期: 2023-09-27 18:06:21

我试图获得当前类的字段。我让这个类实现了ICloneable接口。

clone()中,下面一行似乎没有找到任何字段。为什么不过?

foreach (FieldInfo fi in this.GetType().GetFields())
{
}
许多谢谢,

如何获取当前类的字段

只查找公共字段。看BindingFlags

建议一个更好的方法,只需调用MemberwiseClone,它将复制当前类/实例中的所有字段值。

因为默认情况下只返回公共字段。使用BindingFlags.NonPublic的另一个重载

使用BindingFlags作为:

var flags = BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.Public;
foreach (FieldInfo fi in this.GetType().GetFields(flags))
{
   //...
}

GetFields返回当前类型的所有公共字段。http://msdn.microsoft.com/en-us/library/ch9714z3.aspx您可能需要http://msdn.microsoft.com/en-us/library/6ztex2dc.aspx

GetFields为空的唯一原因是"没有为当前类型定义公共字段"(来自MSDN)。

更一般地说,你知道Object类中已经存在一个受保护的方法,它已经做了你想做的事情(浅拷贝)吗?它叫做MemberwiseClone

你可以这样使用:

public object Clone()
{
    return MemberWiseClone();
}