CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute Class

定義

メソッドの呼び出し元のメソッド名またはプロパティ名を取得できます。Allows you to obtain the method or property name of the caller to the method.

public ref class CallerMemberNameAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
public sealed class CallerMemberNameAttribute : Attribute
type CallerMemberNameAttribute = class
    inherit Attribute
Public NotInheritable Class CallerMemberNameAttribute
Inherits Attribute
継承
CallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttribute
属性

CallerMemberName 属性を使用する方法を次のコード例に示します。The following example shows how to use the CallerMemberName attribute. 呼び出すたびに、TraceMessage省略可能なパラメーターに引数としてメソッドを呼び出し元情報が置き換えられます。On each call to the TraceMessage method, the caller information is substituted as an argument to the optional parameter.

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
Private Sub DoProcessing()
    TraceMessage("Something happened.")
End Sub

Public Sub TraceMessage(message As String,
        <System.Runtime.CompilerServices.CallerMemberName> Optional memberName As String = Nothing,
        <System.Runtime.CompilerServices.CallerFilePath> Optional sourcefilePath As String = Nothing,
        <System.Runtime.CompilerServices.CallerLineNumber()> Optional sourceLineNumber As Integer = 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)
End Sub

' Sample output:
'   message: Something happened.
'   member name: DoProcessing
'   source file path: C:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoVB\CallerInfoVB\Form1.vb
'   source line number: 15

注釈

適用する、CallerMemberName属性を既定値を持つオプションのパラメーター。You apply the CallerMemberName attribute to an optional parameter that has a default value. 省略可能なパラメーターの明示的な既定値を指定する必要があります。You must specify an explicit default value for the optional parameter. 省略可能として指定されていないパラメーターには、この属性を適用することはできません。You can't apply this attribute to parameters that aren't specified as optional.

詳細については、次を参照してください。呼び出し元情報します。For more information, see Caller Information.

CallerMemberName 属性を使用して、呼び出されたメソッドにメンバー名を String 引数として指定することを回避できます。You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method. この方法を使用すると、リファクタリングの名前の変更String 値が変更されないという問題が発生しなくなります。By using this technique, you avoid the problem that Rename Refactoring doesn't change the String values. これは、次のタスクに特に役立ちます。This is especially useful for the following tasks:

  • トレース ルーチンと診断ルーチンの使用。Using tracing and diagnostic routines.

  • データ バインディング時の INotifyPropertyChanged インターフェイスの実装。Implementing the INotifyPropertyChanged interface when binding data. このインターフェイスを使用すると、オブジェクトのプロパティが、プロパティが変更されたことをデータ バインド コントロールに通知できます。これによって、このコントロールは、更新された情報を表示できます。This interface allows the property of an object to notify a bound control that the property has changed, so that the control can display the updated information. CallerMemberName 属性がない場合は、リテラルとしてプロパティ名を指定する必要があります。Without the CallerMemberName attribute, you must specify the property name as a literal.

次のグラフは、CallerMemberName 属性の使用時に返されるメンバー名を示します。The following chart shows the member names that are returned when you use the CallerMemberName attribute.

内で呼び出しが行われますCall occurs within メンバー名の結果Member name result
メソッド、プロパティ、またはイベントMethod, property, or event 呼び出しが発生したメソッド、プロパティ、またはイベントの名前。The name of the method, property, or event from which the call originated.
コンストラクターConstructor 文字列「.ctor」The string ".ctor"
静的コンストラクターStatic constructor 文字列「.cctor」The string ".cctor"
デストラクターです。Destructor 文字列「Finalize」The string "Finalize"
ユーザー定義の演算子または変換User-defined operators or conversions 生成されたメンバー名 (「op_Addition」など)。The generated name for the member, for example, "op_Addition".
Attribute コンストラクターAttribute constructor 属性が適用されるメンバーの名前。The name of the member to which the attribute is applied. 属性がメンバー内の要素 (パラメーター、戻り値、ジェネリック型パラメーターなど) である場合、この結果は、その要素に関連付けられているメンバーの名前になります。If the attribute is any element within a member (such as a parameter, a return value, or a generic type parameter), this result is the name of the member that's associated with that element.
含んでいないメンバー (たとえば、アセンブリ レベルまたは型に適用される属性)No containing member (for example, assembly-level or attributes applied to types) 省略可能なパラメーターの既定値。The default value of the optional parameter.

コンストラクター

CallerMemberNameAttribute() CallerMemberNameAttribute() CallerMemberNameAttribute() CallerMemberNameAttribute()

CallerMemberNameAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the CallerMemberNameAttribute class.

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

明示的なインターフェイスの実装

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

プロパティ

TypeId TypeId TypeId TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

適用対象

こちらもご覧ください