1

MSDNによると、

Type.GetProperties() GetProperties メソッドは、アルファベット順や宣言順など、特定の順序でプロパティを返しません。プロパティが返される順序はさまざまであるため、コードはプロパティが返される順序に依存してはなりません。

このようなことができるように、プロパティに何らかの方法で注釈を付けることができますか (カスタム属性など)。

var properties = typeof(myClass).GetProperties()
.AsEnumerable().OrderBy(Func<VoodooOrdinalAttribute>);

public class MyClass
{
   [VoodooOrdinalAttribute(2)] public string Color { get; set;}
   [VoodooOrdinalAttribute(3)] public string Shape { get; set;}
   [VoodooOrdinalAttribute(1)] public string Mass { get; set;}
}

この

public class VoodooOrdinalAttribute : Attribute
{
   public VoodooOrdinalAttribute(int ordinal)
   {
       this.Ordinal = ordinal;
   }
   public int Ordinal { get; set; }
}

そして、プロパティの順序が

  1. 質量
4

1 に答える 1

3

はい、属性を使用してプロパティを並べ替えることができます。例で行ったように用途を指定して属性を定義する場合、属性で指定された番号で属性を持つプロパティを並べ替える LINQ クエリを次に示します。

var propertyData = from prop in typeof(MyClass).GetProperties()
                   let voodooOrdinalAttribute = Attribute.GetCustomAttribute(prop, typeof(VoodooOrdinalAttribute)) as VoodooOrdinalAttribute
                   where voodooOrdinalAttribute != null
                   let lineOrder = voodooOrdinalAttribute.Ordinal
                   orderby lineOrder ascending
                   select prop;
于 2013-03-20T21:26:01.220 に答える