CallerMemberNameAttribute Class
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Allows you to obtain the method or property name of the caller to the method.
Assembly: mscorlib (in mscorlib.dll)
The CallerMemberNameAttribute type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | CallerMemberNameAttribute | Initializes a new instance of the CallerMemberNameAttribute class. |
| Name | Description | |
|---|---|---|
![]() | Equals | Infrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Returns the hash code for this instance. (Inherited from Attribute.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | Match | When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
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.
You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method. 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.
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. Without the CallerMemberName attribute, you must specify the property name as a literal.
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 | The string ".ctor" |
Static constructor | The string ".cctor" |
Destructor | The string "Finalize" |
User-defined operators or conversions | 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. |

