Nameof-Operator-Alternative für typsichere Datenbindung in C#
Eine der aktuellen Sprachverbesserungen für C# ist die Einbeziehung eines „nameof“. 'Operator. Dieser Operator ermöglicht den typsicheren Zugriff auf Eigenschaftsnamen und erleichtert so das Binden von Domänenobjekten an UI-Elemente. Hier ist eine Problemumgehung, die ähnliche Funktionen in C# vor der Implementierung des „nameof“-Operators bereitstellen kann.
.NET 3.5-Problemumgehung
In .NET 3.5 ist dies möglich Verwenden Sie Lambda-Ausdrücke, um Eigenschaftsnamen als Zeichenfolgen zu extrahieren:
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; } }
Dieser Code verwendet eine generische Klasse, „Nameof<>“, um einen Ausdruck zu akzeptieren, der auf eine Eigenschaft abzielt. Anschließend wird der Hauptteil des Ausdrucks untersucht, um den Eigenschaftsnamen zu extrahieren.
Hinweis: Diese Problemumgehung erfordert C# 3.0 oder höher.
.NET 2.0-Kompatibilität
Leider ist die Implementierung der Funktionalität des „nameof“-Operators in .NET 2.0 nicht möglich nicht möglich. Sie können Eigenschaftsnamen jedoch weiterhin mithilfe von Reflektion manuell erstellen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine typsichere Datenbindung in C# vor und nach dem „nameof'-Operator erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!