http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspxより:
getPropertiesメソッドは、アルファベット順や宣言順などの特定の順序でプロパティを返しません。あなたのコードは、その順序が異なるため、プロパティが返される順序に依存してはいけません。
注文が重要な場合は、結果を並べ替えることをお勧めしますか?
更新カスタムこれは、いくつかの複雑さを追加しますが、ソート属性を使用しての結果にするためのカスタム追加することができ
をソートします。
[AttributeUsage(AttributeTargets.Property)]
public sealed class SortOrderAttribute : Attribute
{
private int _sortOrder;
public SortOrderAttribute(int sortOrder)
{
_sortOrder = sortOrder;
}
}
次はあなたのクラスのプロパティにその属性を適用します:まず、カスタム属性SortOrderAttribute
作成次に
public class Foo
{
[SortOrder(1)]
public int Bar { get; set; }
[SortOrder(2)]
public string Name { get; set; }
}
をしたIComparer:最後に、並べ替えを取得する
public class PropertyInfoComparer : IComparer<PropertyInfo>
{
public int Compare(PropertyInfo a, PropertyInfo b)
{
return a.GetCustomAttributes(typeof(SortOrderAttribute), false)[0] - b.GetCustomAttributes(typeof(SortOrderAttribute), false)[0];
}
}
リスト:
public PropertyInfo[] SortedList()
{
PropertyInfo[] properties = typeof(Foo).GetProperties();
Array.Sort(properties, new PropertyInfoComparer());
return properties;
}
いくつかのコードを投稿すると理解しやすくなります –
物が何らかの命令を保証しない場合は、それを期待することはほとんどできず、さらにそれに頼ることになります。 –
私はあなたの質問に答えることはできませんが、これはここで説明されているメソッドの定義された動作です:http://msdn.microsoft.com/de-de/library/kyaxdd3x.aspx –