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( 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、 、Prop1field2およびProp2) 。

メンバーをその順序で取得する方法はありますか?

ありがとう。

編集:

私は Unity3D (ゲーム エンジン) を使用しており、特定のタイプのカスタム エディターを作成しているため、順序が気になります。型にはフィールドとプロパティがあります。フィールド/プロパティを宣言されている順序で描画したいと思います。もちろん、ユニティは宣言されている順序でフィールドを描画しますが、プロパティは描画しません. そのため、プロパティの描画をサポートする独自のドロワー/エディターを作成しています。

ここに画像の説明を入力

4

0 に答える 0