Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mendapatkan nama harta dari ekspresi lambda di C#?

Bagaimanakah saya boleh mendapatkan nama harta dari ekspresi lambda di C#?

Linda Hamilton
Linda Hamiltonasal
2025-02-01 05:56:08953semak imbas

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

Ekstrak nama atribut dari ekspresi lambda

Apabila menggunakan ungkapan lambda menggunakan nama atribut lulus, mengambil nama atribut sebenar mungkin mencabar. Walau bagaimanapun, terdapat beberapa cara untuk mengekstrak maklumat ini dengan berkesan.

Pelaksanaan awal melibatkan ekspresi lambda yang menukarkan ke dalam ungkapan ahli, dengan asumsi atribut adalah rentetan. Walau bagaimanapun, ini hanya terpakai kepada atribut rentetan.

Untuk menyelesaikan masalah ini, kaedah yang lebih komprehensif diperlukan, yang boleh mengendalikan atribut rentetan dan bukan -string pada masa yang sama. Kaedah berikut memberikan penyelesaian:

<code class="language-csharp">public static PropertyInfo GetPropertyInfo<TSource, TProperty>(
    TSource source,
    Expression<Func<TSource, TProperty>> propertyLambda)</code>
Kaedah ini menerima objek sumber dan ekspresi lambda sebagai input, dan mengembalikan objek PropertyInfo yang menunjukkan atribut yang boleh diakses. Jika ungkapan tidak memetik atribut, ia akan menyebabkan keabnormalan.

dalam pelaksanaan kaedah:

    Ia memeriksa sama ada teks ekspresi lambda adalah membexpression, dan sama ada ahli itu adalah PropertyInfo. Jika keadaan tidak dipenuhi, ia akan menyebabkan keabnormalan.
  1. Reflectype atribut dipadankan dengan jenis sumber atau sama ada ia adalah subclass jenis sumber. Jika tidak, ia akan menyebabkan keabnormalan.
Dengan menggunakan kaedah ini, anda boleh mendapatkan objek PropertyInfo dari ekspresi Lambda untuk memastikan bahawa atribut yang ditemuramah adalah betul dan wujud dalam objek sasaran.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan nama harta dari ekspresi lambda di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn