ホームページ >バックエンド開発 >C++ >C#のラムダ式からプロパティ名を取得するにはどうすればよいですか?

C#のラムダ式からプロパティ名を取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-02-01 05:56:08949ブラウズ

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

lambda式から属性名を抽出

通過属性の名前を使用してlambda式を使用する場合、実際の属性名を取得するのが難しい場合があります。ただし、この情報を効果的に抽出する方法はいくつかあります。

最初の実装には、属性が文字列であると仮定して、lambda式をメンバー式に変換することが含まれていました。ただし、これは文字列属性にのみ適用できます。

この問題を解決するには、より包括的な方法が必要であり、文字列と非ストリング属性を同時に処理できます。次の方法では、解決策が提供されます

このメソッドは、ソースオブジェクトとラムダ式を入力として受け入れ、アクセス可能な属性を示すpropertyInfoオブジェクトを返します。式が属性を引用しない場合、異常を引き起こします。
<code class="language-csharp">public static PropertyInfo GetPropertyInfo<TSource, TProperty>(
    TSource source,
    Expression<Func<TSource, TProperty>> propertyLambda)</code>
メソッドの実装では

ラムダ式のテキストがmemberexpressionであるかどうか、およびメンバーがPropertyInfoであるかどうかをチェックします。状態が満たされない場合、異常を引き起こします。
  1. 属性の反射タイプは、ソースタイプと一致するか、ソースタイプのサブクラスであるかどうかと一致します。そうでない場合は、異常を引き起こします。
  2. この方法を使用することにより、Lambda式からPropertyInfoオブジェクトを安全に取得して、インタビューの属性が正しく、ターゲットオブジェクトに存在することを確認できます。

以上がC#のラムダ式からプロパティ名を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。