假设我有以下课程:
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
显然,不是按照声明成员的顺序(即field1
、Prop1
和)field2
Prop2
有什么办法可以让成员按这个顺序排列吗?
谢谢。
编辑:
我关心订单,因为我使用 Unity3D(游戏引擎)并且我正在为某种类型编写自定义编辑器。该类型将具有字段和属性,我想按照声明它们的顺序绘制字段/属性。当然,unity 确实按照它们声明的顺序绘制字段,但它不绘制属性. 这就是为什么我要制作自己的抽屉/编辑器来支持属性绘制。