Atributos condicionales

    El atributo Conditional que en C# 1.X permitía especificar si compilar ciertas llamadas a métodos en función de valores de constantes de preprocesador ha sido ahora ampliado para también poderse aplicar a la utilización de atributos. En este caso, si la utilización del atributo para un determinado fichero no se compila por no estar definida la constante de la que depende, ninguna clase del mismo a la se aplique lo almacenará entre sus metadatos. Así, si tenemos un fichero test.cs con la siguiente definición de atributo:


 using System;
 
 using System.Diagnostics;
 
 [Conditional("DEBUG")]
 public class TestAttribute : Attribute {}

    Y con él compilamos un fichero miclase.cs con el contenido:


 #define DEBUG
 [Test]                                      
 class MiClase {}

    En el ensamblado resultante la clase MiClase incluirá el atributo Test entre sus metadatos por estar definida la constante DEBUG dentro del fichero en que se usa el atributo. Pero por el contrario, si además compilásemos otro fichero miclase2.cs como el siguiente:


#undef DEBUG
[Test]                                      
class MiClase2 {}

    Entonces la MiClase2 del ensamblado resultante no almacenaría el atributo Test entre sus metadatos por no estar definida la constante DEBUG en el fichero donde se declaró.

Atributos condicionales
José Antonio González Seco

José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.
Fecha de alta:13/01/2007
Última actualizacion:13/01/2007
Visitas totales:8763
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com