Exportar (0) Imprimir
Expandir todo

ConditionalAttribute (Clase)

Actualización: noviembre 2007

Indica a los compiladores que se debería omitir una llamada al método o atributo a menos que se defina un símbolo de compilación condicional especificado.

Espacio de nombres:  System.Diagnostics
Ensamblado:  mscorlib (en mscorlib.dll)

[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
[ComVisibleAttribute(true)]
public sealed class ConditionalAttribute : Attribute
/** @attribute SerializableAttribute */ 
/** @attribute AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true) */
/** @attribute ComVisibleAttribute(true) */
public final class ConditionalAttribute extends Attribute
public final class ConditionalAttribute extends Attribute

El atributo ConditionalAttribute puede aplicarse a métodos y clases. Sin embargo, su uso en clases sólo es válido para los tipos derivados de Attribute. ConditionalAttribute se omite o produce una advertencia del compilador o un mensaje de error si se aplica a cualquier otro tipo.

y5dw26w3.alert_note(es-es,VS.90).gifNota:

En las versiones 1.0 y 1.1 de .NET Framework, el atributo ConditionalAttribute se puede aplicar sólo a los métodos.

Aplicar ConditionalAttribute a un método indica a los compiladores que una llamada al método no debería compilarse en el lenguaje intermedio de Microsoft (MSIL) a menos que se defina el símbolo de compilación condicional asociado a ConditionalAttribute. Aplicar ConditionalAttribute a un atributo indica que el atributo no debería emitirse a los metadatos a menos que se defina el símbolo de compilación condicional. Aún así, el compilador comprueba los tipos de los argumentos pasados al método o atributo.

Puede utilizar las técnicas siguientes para definir los símbolos de compilación condicional:

  • Opciones de la línea de comandos del compilador (por ejemplo, /define:DEBUG).

  • Variables de entorno del shell del sistema operativo (por ejemplo, set DEBUG=1).

  • Directivas pragma del código fuente (por ejemplo, #define DEBUG para definir la variable de compilación y #undef DEBUG para anular la definición).

Se permite que los compiladores que cumplen con Common Language Specification (CLS) omitan ConditionalAttribute. Los compiladores de C#, J# y Visual Basic admiten ConditionalAttribute; los compiladores de JScript y C++ no admiten el atributo.

ConditionalAttribute se aplica a los métodos definidos en las clases Debug y Trace.

Para obtener más información acerca de cómo utilizar los atributos, vea Extender metadatos mediante atributos.

En el ejemplo de código siguiente se muestra el uso de ConditionalAttribute. En el ejemplo se supone que la condición se define en la opción del compilador /define. Puede obtener resultados diferentes si cambia la opción del compilador. Opcionalmente, puede definir las condiciones en el código de ejemplo en lugar de identificarlas como opciones del compilador.

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.

csc ConsoleApp.cs
Calling Method1
Calling Method2
Using the Debug class

csc /define:CONDITION1 ConsoleApp.cs
Calling Method1
CONDITION1 is defined
Calling Method2
CONDITION1 or Condition2 is defined
Using the Debug class

csc /define:Condition2 ConsoleApp.cs
Calling Method1
Calling Method2
CONDITION1 or Condition2 is defined
Using the Debug class

csc /define:DEBUG ConsoleApp.cs
Calling Method1
Calling Method2
Using the Debug class
DEBUG is defined
*/


System.Object
  System.Attribute
    System.Diagnostics.ConditionalAttribute

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft