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:
public static PropertyInfo GetPropertyInfo<TSource, TProperty>(
TSource source,
Expression<Func<TSource, TProperty>> propertyLambda)
Salin selepas log masuk
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. -
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!