Dot-Net
使用 lambda 而不是字元串屬性名稱選擇模型屬性
我正在建構一個類型的屬性列表,以包含在該類型集合的導出中。我想在不使用字元串作為屬性名稱的情況下執行此操作。列表中僅包含該類型的某些屬性。我想做類似的事情:
exportPropertyList<JobCard>.Add(jc => jc.CompletionDate, "Date of Completion");我該如何去實現這個通用的 Add 方法?順便說一句,字元串是屬性的描述。
您可以通過檢查傳入的表達式來獲取 PropertyInfo 對象。例如:
public void Add<T>(Expression<Func<T,object>> expression, string displayName) { var memberExpression = expression.Body as MemberExpression; PropertyInfo prop = memberExpression.Member as PropertyInfo; // Add property here to some collection, etc ? }這是一個不完整的實現,因為我不知道您究竟想對屬性做什麼 - 但它確實顯示瞭如何從表達式中獲取 PropertyInfo - PropertyInfo 對象包含有關該屬性的所有元數據。此外,在將其應用於生產程式碼之前,請務必在上面添加錯誤處理(即防止表達式不是 MemberExpression 等)。