Heim > Backend-Entwicklung > C++ > Wie kann ich den typsicheren Abruf von Eigenschaftsnamen in älteren C#-Versionen erreichen?

Wie kann ich den typsicheren Abruf von Eigenschaftsnamen in älteren C#-Versionen erreichen?

DDD
Freigeben: 2024-12-26 21:35:15
Original
1082 Leute haben es durchsucht

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

Typsichere Problemumgehung für das Fehlen des Operators „nameof“ in C#

Der Operator „nameof“, der die Zeichenfolgendarstellung eines Eigenschaftsnamens zurückgibt ist eine neue Ergänzung zu C#. Das Fehlen dieses Operators in früheren Versionen von C# kann jedoch ein Hindernis für die typsichere Datenbindung sein.

Eine typsichere Lösung mit Lambda-Ausdrücken

Eine Problemumgehung Dieses Problem besteht darin, Lambda-Ausdrücke zu verwenden, um Eigenschaftsnamen zu erhalten. Dieser Ansatz gewährleistet die Typsicherheit und bietet gleichzeitig eine ähnliche Funktionalität wie nameof. So funktioniert es:

  1. Definieren Sie eine generische Klasse namens Nameof mit einer statischen Property-Methode.
  2. Rufen Sie innerhalb der Property-Methode den Hauptteil des bereitgestellten Lambda-Ausdrucks ab.
  3. Wandeln Sie den Körper in einen MemberExpression um und extrahieren Sie den Eigenschaftsnamen aus dem Member Feld.

Beispielverwendung

Der folgende Code zeigt, wie diese Problemumgehung verwendet wird:

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;
    }
}
Nach dem Login kopieren

In diesem Beispiel würde propName die Zeichenfolge „Name“ enthalten, nachdem Property mit dem Ausdruck e => aufgerufen wurde. e.Name.

Hinweis: Diese Problemumgehung erfordert .NET 3.5 oder höher. Für .NET 2.0 wäre ein anderer Ansatz notwendig. Es ist jedoch nicht möglich, die Funktionalität von nameof vollständig zu replizieren, ohne Lambda-Ausdrücke oder Reflektion zu verwenden, die beide in .NET 2.0 nicht unterstützt werden.

Das obige ist der detaillierte Inhalt vonWie kann ich den typsicheren Abruf von Eigenschaftsnamen in älteren C#-Versionen erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage