Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencapai Pengambilan Nama Harta Jenis-Selamat dalam Versi C# Lama?
Penyelesaian Jenis-Selamat untuk Ketiadaan nama Operator dalam C#
Nama pengendali, yang mengembalikan perwakilan rentetan nama sifat , ialah tambahan terbaru kepada C#. Walau bagaimanapun, kekurangan operator ini dalam versi C# yang lebih awal boleh menjadi penghalang kepada penjilidan data selamat taip.
Penyelesaian Jenis-Selamat Menggunakan Ungkapan Lambda
Satu penyelesaian untuk isu ini ialah menggunakan ungkapan lambda untuk mendapatkan nama harta. Pendekatan ini memastikan keselamatan jenis sambil menyediakan fungsi yang serupa dengan nameof. Begini caranya:
Contoh Penggunaan
Kod berikut menunjukkan cara menggunakan penyelesaian ini:
class Program { static void Main() { var propName = Nameof<Customer>.Property(e => e.Name); Console.WriteLine(propName); } } public class Nameof<T> { public static string Property<TProp>(Expression<Func<T, TProp>> expression) { var body = expression.Body as MemberExpression; if(body == null) throw new ArgumentException("'expression' should be a member expression"); return body.Member.Name; } }
Dalam contoh ini, propName akan mengandungi rentetan "Nama" selepas menggunakan Harta dengan ungkapan e => e.Nama.
Nota: Penyelesaian ini memerlukan .NET 3.5 atau lebih baru. Untuk .NET 2.0, pendekatan berbeza diperlukan. Walau bagaimanapun, adalah tidak mungkin untuk meniru sepenuhnya kefungsian nameof tanpa menggunakan ungkapan atau pantulan lambda, yang kedua-duanya tidak disokong dalam .NET 2.0.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Pengambilan Nama Harta Jenis-Selamat dalam Versi C# Lama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!