首頁 >後端開發 >C++ >如何從C#中的lambda表達式中檢索屬性名稱?

如何從C#中的lambda表達式中檢索屬性名稱?

Linda Hamilton
Linda Hamilton原創
2025-02-01 05:56:08995瀏覽

How Can I Retrieve a Property Name from a Lambda Expression in C#?

從Lambda表達式中提取屬性名稱

在使用傳遞屬性名稱的lambda表達式時,檢索實際屬性名稱可能具有挑戰性。但是,有一些方法可以有效地提取此信息。

最初的實現涉及將lambda表達式強制轉換為成員表達式,假設屬性是字符串。但是,這僅適用於字符串屬性。

為了解決這個問題,需要一種更全面的方法,該方法可以同時處理字符串和非字符串屬性。以下方法提供了一種解決方案:

<code class="language-csharp">public static PropertyInfo GetPropertyInfo<TSource, TProperty>(
    TSource source,
    Expression<Func<TSource, TProperty>> propertyLambda)</code>

此方法接受源對象和lambda表達式作為輸入,並返回表示被訪問屬性的PropertyInfo對象。如果表達式不引用屬性,則會引發異常。

在方法的實現中:

  1. 它檢查lambda表達式的正文是否為MemberExpression,以及Member是否為PropertyInfo。如果任一條件不滿足,則會引發異常。
  2. 它驗證屬性的ReflectedType是否與源類型匹配或是否是源類型的子類。如果不是,則會引發異常。

通過使用此方法,您可以安全地從lambda表達式中獲取PropertyInfo對象,確保被訪問的屬性具有正確的類型並且存在於目標對像中。

以上是如何從C#中的lambda表達式中檢索屬性名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn