2009-09-11 15 views
11

Quiero usar el atributo condicional en una clase, o más al punto, ¿hay algo que dé ese efecto? Básicamente, no quiero que la clase esté allí en modo de depuración. Tampoco quiero tener que ajustar cada llamada en una directiva #if DEBUG.¿Hay un atributo Condicional en el nivel de clase?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 

namespace NameSpace 
{ 
    [Conditional("Debug")] 
    public class ClassName 
    { 

     public ClassName() 
     { 
     } 
    } 
} 

Respuesta

10

No, no lo hay. Los atributos condicionales no hacen que sus objetivos desaparezcan por sí solos; solo hacen que el compilador omita usuarios de los destinos.

Eric Lippert tenía un post on just this sort of thing hoy, como suele pasar. Léelo y ve si todo tiene más sentido para ti.

Si realmente necesita omitir la clase en modo liberación, entonces use las directivas de preprocesador, pero también tendrá que hacer lo mismo con todas las personas que llaman. ¿Qué daño tiene mantener a la clase en modo de lanzamiento, de todos modos?

¿Podría ser esto realmente una clase en un proyecto diferente? Si es así, y luego puede aplicar el atributo condicional a todos los métodos, entonces el tipo no sería necesario en el modo de lanzamiento, por lo que podría evitar enviar el conjunto.

+1

¿Puedo omitir todos los usuarios de la clase? –

+1

Si coloca Conditional en todos los * métodos * de la clase, se eliminarán todas las llamadas, pero la clase en sí se construirá. –

+0

¿Entonces las instancias de la clase todavía se crearán y usarán la memoria? –

0

No estoy seguro, si entiendo bien esto.

Pero, si decora todos los métodos con ConditionalAttribute, todo se eliminará cuando el símbolo no esté presente. Y por lo tanto, aunque la clase está disponible para su uso, no habrá ningún método en tiempo de ejecución para usarla.

No estoy seguro, ¿por qué querría excluir una clase según el símbolo? ¿Podría explicar el escenario?

Cuestiones relacionadas