C# に 'nameof' 演算子が存在しないことは、開発者の間で議論を引き起こしました。この演算子を実装すると、nameof(Customer.Name) からの "Name" など、プロパティ名を文字列として取得できるようになります。
タイプセーフなデータ バインディングが必要なシナリオの場合、開発者は次の回避策を模索しました。 「名前」が存在しないこと。 .NET 3.5 では、ラムダ式を利用したソリューションの 1 つが登場しました。ただし、この回避策を見つけるのは難しい場合があります。
.NET 3.5 で 'nameof' の機能を実装するには、次のアプローチを採用できます。
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; } }
このコードは効果的に取得して表示します。型安全性を確保しながら、プロパティ名を文字列として返します。
以上が`nameof` 演算子を使用せずに C# でタイプセーフなデータ バインディングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。