Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mencapai Pengambilan Nama Harta Jenis-Selamat dalam Versi C# Lama?

Bagaimanakah Saya Boleh Mencapai Pengambilan Nama Harta Jenis-Selamat dalam Versi C# Lama?

DDD
Lepaskan: 2024-12-26 21:35:15
asal
1039 orang telah melayarinya

How Can I Achieve Type-Safe Property Name Retrieval in Older C# Versions?

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:

  1. Tentukan kelas generik yang dipanggil Nameof dengan kaedah Property statik.
  2. Di dalam kaedah Property, dapatkan semula badan ungkapan lambda yang disediakan.
  3. Letakkan badan sebagai MemberExpression dan ekstrak nama hartanah daripada Ahli medan.

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;
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan