ConditionalAttribute 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.
Indica aos compiladores que uma chamada de método ou atributo deve ser ignorado, a menos que seja definido um símbolo de compilação condicional especificado.
public ref class ConditionalAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)]
public sealed class ConditionalAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true)]
[System.Serializable]
public sealed class ConditionalAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ConditionalAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)>]
type ConditionalAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true)>]
[<System.Serializable>]
type ConditionalAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ConditionalAttribute = class
inherit Attribute
Public NotInheritable Class ConditionalAttribute
Inherits Attribute
- Herança
- Atributos
Exemplos
O exemplo a seguir demonstra o uso de ConditionalAttribute. O exemplo assume que a condição está definida com a opção do compilador /define . Pode obter resultados diferentes mudando a opção do compilador. Pode, opcionalmente, definir as condições usando pragmas no código de exemplo em vez de as identificar como opções do compilador.
#define CONDITION1
#define CONDITION2
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
Console.WriteLine("Calling Method1");
Method1(3);
Console.WriteLine("Calling Method2");
Method2();
Console.WriteLine("Using the Debug class");
Debug.Listeners.Add(new ConsoleTraceListener());
Debug.WriteLine("DEBUG is defined");
}
[Conditional("CONDITION1")]
public static void Method1(int x)
{
Console.WriteLine("CONDITION1 is defined");
}
[Conditional("CONDITION1"), Conditional("CONDITION2")]
public static void Method2()
{
Console.WriteLine("CONDITION1 or CONDITION2 is defined");
}
}
/*
When compiled as shown, the application (named ConsoleApp)
produces the following output.
Calling Method1
CONDITION1 is defined
Calling Method2
CONDITION1 or CONDITION2 is defined
Using the Debug class
DEBUG is defined
*/
#Const CONDITION1 = True
#Const CONDITION2 = True
Imports System.Diagnostics
Class Test
Shared Sub Main()
Console.WriteLine("Calling Method1")
Method1(3)
Console.WriteLine("Calling Method2")
Method2()
Console.WriteLine("Using the Debug class")
Debug.Listeners.Add(New ConsoleTraceListener())
Debug.WriteLine("DEBUG is defined")
End Sub
<ConditionalAttribute("CONDITION1")> _
Shared Sub Method1(x As Integer)
Console.WriteLine("CONDITION1 is defined")
End Sub
<ConditionalAttribute("CONDITION1"), ConditionalAttribute("CONDITION2")> _
Shared Sub Method2()
Console.WriteLine("CONDITION1 or CONDITIOIN2 is defined")
End Sub
End Class
' When compiled as shown, the application (named ConsoleApp)
' produces the following output.
'Calling Method1
'CONDITION1 is defined
'Calling Method2
'CONDITION1 or CONDITION2 is defined
'Using the Debug class
'DEBUG is defined
Observações
Podes aplicar o ConditionalAttribute atributo a métodos e classes. No entanto, a sua utilização em classes é válida apenas para tipos derivados de Attribute. ConditionalAttribute Qualquer um será ignorado ou gerará um aviso ou mensagem de erro do compilador se o aplicar a qualquer outro tipo.
Aplicar ConditionalAttribute a um método indica aos compiladores que uma chamada ao método não deve ser compilada para Microsoft linguagem intermédia (MSIL), a menos que o símbolo de compilação condicional associado a ConditionalAttribute esteja definido. Receberá um erro de compilação no Visual Studio se aplicar este atributo a um método que não devolve void. Aplicar ConditionalAttribute a um atributo indica que o atributo não deve ser emitido para metadados a menos que o símbolo de compilação condicional esteja definido. Quaisquer argumentos passados ao método ou atributo continuam a ser verificados por tipo pelo compilador.
Pode usar as seguintes técnicas para definir símbolos de compilação condicional:
Use opções de linha de comandos do compilador; por exemplo, /define:DEBUG.
Utilizar variáveis de ambiente na interface do sistema operativo; por exemplo, defina DEBUG=1.
Use pragmas no código-fonte; Por exemplo, defina a variável de compilação da seguinte forma:
#define DEBUG#Const DEBUG=TruePara desdefinir a variável, use o seguinte:
#undef DEBUG#Const DEBUG=False
Compiladores que cumpram a Especificação Comum de Linguagem (CLS) podem ignorar ConditionalAttribute. Os compiladores C#, F#, Visual Basic e C++ suportam ConditionalAttribute; o compilador JScript não suporta esse atributo.
Note
Em Visual Basic, o operador AddressOf não é afetado por este atributo. Por exemplo, Call CType(AddressOf delegate, Action) invoca sempre delegate, embora Call delegate() possa não o fazer.
ConditionalAttributeé aplicado aos métodos definidos nas Debug classes e.Trace
Para mais informações sobre como usar os atributos, consulte Atributos.
Construtores
| Name | Description |
|---|---|
| ConditionalAttribute(String) |
Inicializa uma nova instância da ConditionalAttribute classe. |
Propriedades
| Name | Description |
|---|---|
| ConditionString |
Obtém o símbolo de compilação condicional associado ao ConditionalAttribute atributo. |
| 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) |