C# でのタイプセーフなデータ バインディングの代替演算子の Nameof 演算子
C# の現在の言語改善の 1 つは、'nameof を含めることです。 ' 演算子。この演算子により、プロパティ名へのタイプセーフなアクセスが可能になり、ドメイン オブジェクトを UI 要素にバインドしやすくなります。ここでは、'nameof' 演算子を実装する前に C# で同様の機能を提供できる回避策を示します。
.NET 3.5 回避策
.NET 3.5 では、次のことができます。ラムダ式を使用してプロパティ名を文字列として抽出します:
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; } }
このコードはジェネリック クラス 'Nameof>' を使用して、プロパティをターゲットとする式を受け入れます。次に、式の本体が検査されてプロパティ名が抽出されます。
注: この回避策には C# 3.0 以降が必要です。
.NET 2.0 との互換性
残念ながら、「nameof」演算子の機能は、 .NET 2.0 は使用できません。ただし、リフレクションを使用してプロパティ名を手動で構築することもできます。
以上がC# で `nameof` 演算子の前後でタイプセーフなデータ バインディングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。