ホームページ >バックエンド開発 >C++ >`nameof` 演算子を使用せずに C# でタイプセーフなデータ バインディングを実現するにはどうすればよいですか?

`nameof` 演算子を使用せずに C# でタイプセーフなデータ バインディングを実現するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-31 08:43:10558ブラウズ

How Can I Achieve Type-Safe Data Binding in C# Without the `nameof` Operator?

タイプセーフなデータ バインディングのための C# の 'nameof' 演算子の欠如に対する回避策

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。