27

「nameof」式は、Visual Studio 2015 および c# 6 で導入されました

nameof (C# および Visual Basic リファレンス)

.net Framework 4.

4

5 に答える 5

3

nameOf- で解決されますCompiletime- 逆コンパイルすると、コンパイラがクラス名 (Namespace(!) なし) を代わりに定数文字列に変換したことがわかります。だから気をつけて!

クラスの名前を取得したい場合、typeof()またはGetType()特定の (おそらく派生した) タイプを取得したい場合は、.net < C#6 で -Property のRuntime値を読み取ります。
.Name

MSDNで詳細を読む

于 2015-07-07T07:09:07.150 に答える
3

私の知る限り、魔法の文字列を使用する必要がない 3 つのオプションがあります。

  1. nameofには Visual Studio 2015 が必要です (ただし、.net フレームワークの他のバージョンにコンパイルできます)

    nameof(this.Property)
    
  2. この投稿「リフレクションを使用してプロパティの文字列名を取得する」にあるように、式を取り、プロパティ名を返すメソッドを使用します

    var propertyName = GetPropertyName(  
        () => myObject.AProperty); // returns "AProperty"
    
  3. CallerMemberNameAttribute - (.net Framework 4.5 でのみ使用可能。元の投稿では .net Framework 4.0 のような古いバージョンで、4.5 が含まれていると思われるため含まれています) このメソッドの欠点は、現在のメソッドの文字列表現が必要な場合にのみ役立つことです。で営業しています。

    public string IsChecked  {
       set{
           Console.WriteLine(GetCurrentMemberName()); // prints "IsChecked"
       }
    }
    
    string GetCurrentMemberName([CallerMemberName] string memberName = "")
    {
         return memberName;
    }
    
于 2015-07-08T03:59:38.707 に答える