Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencapai Pengikatan Data Jenis-Selamat dalam C# Tanpa Operator `nameof`?

Bagaimanakah Saya Boleh Mencapai Pengikatan Data Jenis-Selamat dalam C# Tanpa Operator `nameof`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-31 08:43:10542semak imbas

How Can I Achieve Type-Safe Data Binding in C# Without the `nameof` Operator?

Penyelesaian untuk Kekurangan 'nameof' Operator dalam C# untuk Type-Safe Data Binding

Ketiadaan operator 'nameof' dalam C# telah mencetuskan perbincangan di kalangan pembangun. Operator ini, jika dilaksanakan, akan membolehkan pengambilan semula nama sifat sebagai rentetan, seperti "Nama" daripada nameof(Customer.Name).

Untuk senario yang memerlukan pengikatan data selamat jenis, pembangun telah mencari penyelesaian dalam ketiadaan 'nama'. Satu penyelesaian muncul dalam .NET 3.5 yang menggunakan ungkapan lambda. Walau bagaimanapun, mencari penyelesaian ini boleh menjadi mencabar.

Untuk melaksanakan kefungsian 'nameof' dalam .NET 3.5, pendekatan berikut boleh diguna pakai:

using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        var propName = Nameof<SampleClass>.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;
    }
}

Kod ini mengambil dan memaparkan dengan berkesan nama sifat sebagai rentetan sambil memastikan keselamatan jenis.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Pengikatan Data Jenis-Selamat dalam C# Tanpa Operator `nameof`?. 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