定義した順にメンバをとりだすことはできないんだろうか

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

関数(プロパティの実体含む)→プロパティ→メンバの順かな。各カテゴリ内では宣言された順を保っているようだが、全体での順序は保持されてない、たぶん……