CallerMemberNameAttribute Класс

Определение

Позволяет получить имя метода или свойства, вызывающего метод.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
Наследование
CallerMemberNameAttribute
Атрибуты

Примеры

В следующем примере показано использование атрибута 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 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.Initializes a new instance of the CallerMemberNameAttribute class.

Свойства

TypeId

При реализации в производном классе возвращает уникальный идентификатор для этого Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Унаследовано от Attribute)

Методы

Equals(Object)

Возвращает значение, показывающее, равен ли экземпляр указанному объекту.Returns a value that indicates whether this instance is equal to a specified object.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код данного экземпляра.Returns the hash code for this instance.

(Унаследовано от Attribute)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Явные реализации интерфейса

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.Maps a set of names to a corresponding set of dispatch identifiers.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Унаследовано от Attribute)

Применяется к

Дополнительно