クラスで宣言されている順序でリフレクションを使用してすべてのプロパティを取得する必要があります。MSDNによると、使用時に順序を保証することはできませんGetProperties()
GetPropertiesメソッドは、アルファベット順や宣言順など、特定の順序でプロパティを返しません。
ただし、プロパティをで並べ替えることで回避策があることを読みましたMetadataToken
。だから私の質問は、それは安全ですか?それに関するMSDNの情報が見つからないようです。または、この問題を解決する他の方法はありますか?
私の現在の実装は次のようになります。
var props = typeof(T)
.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.OrderBy(x => x.MetadataToken);