次のクラスがあるとしましょう:
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
( then )で宣言されている順序でフィールドを取得します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 (ゲーム エンジン) を使用しており、特定のタイプのカスタム エディターを作成しているため、順序が気になります。型にはフィールドとプロパティがあります。フィールド/プロパティを宣言されている順序で描画したいと思います。もちろん、ユニティは宣言されている順序でフィールドを描画しますが、プロパティは描画しません. そのため、プロパティの描画をサポートする独自のドロワー/エディターを作成しています。