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:
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; } }
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!