「nameof」式は、Visual Studio 2015 および c# 6 で導入されました
nameof (C# および Visual Basic リファレンス)
.net Framework 4.
「nameof」式は、Visual Studio 2015 および c# 6 で導入されました
nameof (C# および Visual Basic リファレンス)
.net Framework 4.
nameOf
- で解決されますCompiletime
- 逆コンパイルすると、コンパイラがクラス名 (Namespace(!) なし) を代わりに定数文字列に変換したことがわかります。だから気をつけて!
クラスの名前を取得したい場合、typeof()
またはGetType()
特定の (おそらく派生した) タイプを取得したい場合は、.net < C#6 で -Property
のRuntime
値を読み取ります。.Name
MSDNで詳細を読む
私の知る限り、魔法の文字列を使用する必要がない 3 つのオプションがあります。
nameofには Visual Studio 2015 が必要です (ただし、.net フレームワークの他のバージョンにコンパイルできます)
nameof(this.Property)
この投稿「リフレクションを使用してプロパティの文字列名を取得する」にあるように、式を取り、プロパティ名を返すメソッドを使用します
var propertyName = GetPropertyName(
() => myObject.AProperty); // returns "AProperty"
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;
}