2011-06-30 47 views
1

例如,假設我有一個字符串屬性「Document.DocumentType.DocumentCode」,DocumentCode是一個可爲空的十進制類型。如何構建多級別引用屬性(鏈接屬性)的表達式樹?

如何爲此構建表達式樹:x.Document.DocumentType.DocumentCode.GetValueOrDefault() == 4

對於我的真實情況,我不會確切知道鏈接的字符串屬性的樣子或屬性的級別。

+0

我建議重寫這個,不是很容易理解真正的問題是什麼。 – ChrisBint

回答

4

嗯,這樹是:

  • 一個等式匹配項,其中左手側是複雜的,右手側是常量表達式4.
  • 的LHS是上的方法調用GetValueOrDefault()(一個表達式)
  • 來自前面步驟中的表達是在(表達式)
  • 來自前一步驟的表達式的屬性訪問表達DocumentCode上(一個表達式的屬性訪問表達DocumentType
  • 來自前面步驟中的表達是從底部​​

啓動屬性訪問表達Document,並從那裏建立起來。換句話說,如果你知道你只有屬性,你需要:

  • 將字符串拆分爲「。」。
  • 創建一個​​
  • 循環訪問屬性集,每次添加另一個圖層或屬性訪問權限,例如,

    currentExpression = Expression.Property(currentExpression, propertyName); 
    
  • 在添加一個方法調用,以表達

  • 使用建立一個平等的比較,你會給出什麼恆定值
相關問題