CallerMemberNameAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Parâmetro de etiquetas que deve ser preenchido com o nome específico do membro do chamador.
public ref class CallerMemberNameAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
public sealed class CallerMemberNameAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)>]
type CallerMemberNameAttribute = class
inherit Attribute
Public NotInheritable Class CallerMemberNameAttribute
Inherits Attribute
- Herança
- Atributos
Exemplos
O exemplo seguinte mostra como usar o CallerMemberName atributo. Em cada chamada ao TraceMessage método, a informação do chamador é substituída como argumento ao parâmetro opcional.
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
Observações
Aplicas o CallerMemberName atributo a um parâmetro opcional que tem um valor predefinido. Deve especificar um valor explícito por defeito para o parâmetro opcional. Não podes aplicar este atributo a parâmetros que não estão especificados como opcionais.
Para mais informações, consulte Informações para Chamadores.
Você pode usar o CallerMemberName atributo para evitar especificar o nome do membro como um String argumento para o método chamado. Usando essa técnica, você evita o problema de que Renomear refatoração não altera os String valores. Isto é especialmente útil para as seguintes tarefas:
Utilização de rotinas de rastreio e diagnóstico.
Implementação da INotifyPropertyChanged interface ao vincular dados. Essa interface permite que a propriedade de um objeto notifique um controle acoplado de que a propriedade foi alterada, para que o controle possa exibir as informações atualizadas. Sem o
CallerMemberNameatributo, você deve especificar o nome da propriedade como um literal.
O gráfico a seguir mostra os nomes de membros que são retornados quando você usa o CallerMemberName atributo.
| A chamada ocorre dentro de | Resultado do nome do membro |
|---|---|
| Método, propriedade ou evento | O nome do método, propriedade ou evento do qual a chamada se originou. |
| Construtor | A cadeia de caracteres ".ctor" |
| Construtor estático | A cadeia de caracteres ".cctor" |
| Destruidor | A string «Finalizar» |
| Operadores ou conversões definidos pelo usuário | O nome gerado para o membro, por exemplo, "op_Addition". |
| Construtor de Atributo | O nome do membro ao qual o atributo é aplicado. Se o atributo for qualquer elemento dentro de um membro (como um parâmetro, um valor de retorno ou um parâmetro de tipo genérico), esse resultado será o nome do membro associado a esse elemento. |
| Nenhum membro contenedor (por exemplo, nível de montagem ou atributos aplicados aos tipos) | O valor padrão do parâmetro opcional. |
Construtores
| Name | Description |
|---|---|
| CallerMemberNameAttribute() |
Inicializa uma nova instância da CallerMemberNameAttribute classe. |
Propriedades
| Name | Description |
|---|---|
| TypeId |
Quando implementado numa classe derivada, obtém um identificador único para esta Attribute. (Herdado de Attribute) |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de Attribute) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
| Match(Object) |
Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface. (Herdado de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |
Aplica-se a
Ver também
- CallerFilePathAttribute
- CallerLineNumberAttribute
C0 (C# e Visual Basic)