1
根據MSDN,是否可以使用屬性對Type.GetProperties()返回的類型屬性進行排序?
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; }
}
,並期望性的判定順序是
- 質量
- 顏色
- 形狀
我編輯了我的問題,包括VoodooOrdinalAttribute實現。你的查詢如何按照屬性構造函數參數和/或屬性指定的順序進行拾取? – Jeff 2013-03-20 21:47:34
對於每個屬性,它都獲得屬性(首先讓表達式)。然後它執行一個空的檢查(where子句),然後從該屬性的屬性實例(第二個let表達式)獲取序號。最後,它按升序排列屬性(orderby子句),然後選擇屬性(select子句)。 – JKor 2013-03-20 22:30:41
啊......知道了。 '.Ordinal'是你在屬性上賦予屬性的名稱。我會更新我的問題。幹得不錯! – Jeff 2013-03-20 22:58:19