この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

CallerMemberNameAttribute クラス

.NET Framework (current version)
 

公開日: 2016年10月

メソッドの呼び出し元のメソッドまたはプロパティの名前を取得できるようにします。

名前空間:   System.Runtime.CompilerServices
アセンブリ:  mscorlib (mscorlib.dll 内)

System.Object
  System.Attribute
    System.Runtime.CompilerServices.CallerMemberNameAttribute

[AttributeUsageAttribute(AttributeTargets.Parameter, Inherited = false)]
public sealed class CallerMemberNameAttribute : Attribute

名前説明
System_CAPS_pubmethodCallerMemberNameAttribute()

CallerMemberNameAttribute クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_pubpropertyTypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。(Attribute から継承されます。)

名前説明
System_CAPS_pubmethodEquals(Object)

この API は 製品 インフラストラクチャをサポートします。コードから直接使用するためのものではありません。 このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。(Attribute から継承されます。)

System_CAPS_pubmethodGetHashCode()

このインスタンスのハッシュ コードを返します。(Attribute から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodIsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。(Attribute から継承されます。)

System_CAPS_pubmethodMatch(Object)

派生クラスでオーバーライドされた場合は、このインスタンスに指定したオブジェクトが等しいかどうかを示す値を返します。(Attribute から継承されます。)

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

名前説明
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。(Attribute から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。(Attribute から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。(Attribute から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。(Attribute から継承されます。)

適用する、 CallerMemberName 属性を既定値を持つ省略可能なパラメーターです。 省略可能なパラメーターに明示的な既定値を指定する必要があります。 オプションとして指定されていないパラメーターには、この属性を適用できません。

詳細については、「呼び出し元情報 (C# および Visual Basic)」を参照してください。

CallerMemberName 属性を使用して、呼び出されたメソッドにメンバー名を String 引数として指定することを回避できます。 この方法を使用すると、[リファクタリングの名前の変更]String 値が変更されないという問題が発生しなくなります。 これは、次のタスクに特に便利です。

  • トレース ルーチンと診断ルーチンの使用。

  • データ バインディング時の INotifyPropertyChanged インターフェイスの実装。 このインターフェイスを使用すると、オブジェクトのプロパティが、プロパティが変更されたことをデータ バインド コントロールに通知できます。これによって、このコントロールは、更新された情報を表示できます。 CallerMemberName 属性がない場合は、リテラルとしてプロパティ名を指定する必要があります。

次のグラフは、CallerMemberName 属性の使用時に返されるメンバー名を示します。

内で呼び出しが行われる

メンバー名の結果

メソッド、プロパティ、またはイベント

呼び出しが発生したメソッド、プロパティ、またはイベントの名前。

コンストラクター

文字列「.ctor」

静的コンストラクター

文字列「.cctor」

デストラクターです。

文字列「Finalize」

ユーザー定義の演算子または変換

メンバーの生成された名前 (例「op_Addition」)。

Attribute コンストラクター

属性が適用されるメンバーの名前。 属性がメンバー内の要素 (パラメーター、戻り値、ジェネリック型パラメーターなど) である場合、この結果は、その要素に関連付けられているメンバーの名前になります。

含んでいないメンバー (たとえば、アセンブリ レベルまたは型に適用される属性)

省略可能なパラメーターの既定値。

CallerMemberName 属性を使用する方法を次のコード例に示します。 呼び出すたびに、 TraceMessage メソッドを呼び出し元情報は省略可能なパラメーターに渡す引数として設定します。

public void DoProcessing()
{
    TraceMessage("Something happened.");
}

public void TraceMessage(string message,
        [System.Runtime.CompilerServices.CallerMemberName] string memberName = "",
        [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "",
        [System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 0)
{
    System.Diagnostics.Trace.WriteLine("message: " + message);
    System.Diagnostics.Trace.WriteLine("member name: " + memberName);
    System.Diagnostics.Trace.WriteLine("source file path: " + sourceFilePath);
    System.Diagnostics.Trace.WriteLine("source line number: " + sourceLineNumber);
}

// Sample Output:
//  message: Something happened.
//  member name: DoProcessing
//  source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
//  source line number: 31

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
4.5 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Windows Phone Silverlight
8.0 以降で使用可能
Windows Phone
8.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: