1

假设我有以下课程:

public class Target
{
   public int field1;
   public int field2;
   public int Prop1 { get; set; }
   public int Prop2 { get; set; }
}

如果我这样做:

foreach(far f in typeof(Target).GetFields())
   Console.WriteLine(f.Name);

我会按照它们在(field1然后field2)中声明的顺序获取这些字段。如果我做了同样的事情GetProperties

现在,考虑以下几点:

public class Target
{
   public int field1;
   public int Prop1 { get; set; }
   public int field2;
   public int Prop2 { get; set; }
}

当我这样做时:

    var members = typeof(Target).GetMembers()
                 .Where(m => m.MemberType == MemberTypes.Field ||
                             m.MemberType == MemberTypes.Property);

    foreach (var m in members)
        Console.WriteLine(m.Name);

我得到以下输出:

Prop1
Prop2
field1
field2

显然,不是按照声明成员的顺序(即field1Prop1和)field2Prop2

有什么办法可以让成员按这个顺序排列吗?

谢谢。

编辑:

我关心订单,因为我使用 Unity3D(游戏引擎)并且我正在为某种类型编写自定义编辑器。该类型将具有字段和属性,我想按照声明它们的顺序绘制字段/属性。当然,unity 确实按照它们声明的顺序绘制字段,但它不绘制属性. 这就是为什么我要制作自己的抽屉/编辑器来支持属性绘制。

在此处输入图像描述

4

0 回答 0