定義した順にメンバをとりだすことはできないんだろうか
namespace Sandbox { class Hoge { public int mem1; public char mem2 { get { return 'a'; } } public void mem3() { } public string mem4; public double mem5(int i) { return 0.0; } public int mem6 { get { return 0; } set { } } } class Program { static void Main(string[] args) { MemberInfo[] mis = typeof(Hoge).GetMembers( BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance ); foreach(MemberInfo mi in mis) Console.WriteLine(mi.Name); } } }
get_mem2 mem3 mem5 get_mem6 set_mem6 .ctor mem2 mem6 mem1 mem4
class Hoge { public string mem4; public double mem5(int i) { return 0.0; } public int mem6 { get { return 0; } set { } } public int mem1; public char mem2 { get { return 'a'; } } public void mem3() { } }
mem5 get_mem6 set_mem6 get_mem2 mem3 .ctor mem6 mem2 mem4 mem1
関数(プロパティの実体含む)→プロパティ→メンバの順かな。各カテゴリ内では宣言された順を保っているようだが、全体での順序は保持されてない、たぶん……