Type.GetProperty 和只读字段之间的关系

Which relation between Type.GetProperty and a readonly field

我得到了以下 class:

public sealed class ImmutableObject {

         public readonly int ic;

         public ImmutableObject(int value) {
             ic = value;
         }
}

然后我创建了一个试图通过这个class:

获取反射信息的方法
public static void infosByImmutableObject() {
         ImmutableObject iobj = new ImmutableObject(1);

         Console.WriteLine(iobj.ic);

         Type typeIobj = iobj.GetType();

         PropertyInfo infos = typeIobj.GetProperty("ic");

}

我不明白为什么,尽管 icpublicinfos 仍然是 null,如果我尝试使用 Type.GetProperties 结果数组有零个元素。我注意到,如果没有 readonly 修饰符,GetProperties("ic") returns。当存在 readonly 时,GetProperty() 如何看到 public 字段?

ic 不是 属性,它是一个字段。您应该使用 GetFieldGetFields 为其检索 FieldInfo 对象:

FieldInfo infos = typeIobj.GetField("ic");
Debug.Assert(infos!=null);

字段和属性是 .NET 中不同类型的成员。通常,属性被视为 class 接口的一部分,而字段被视为其实现的一部分。