2011-12-21 18 views
24

Tengo una función en desuso (obsoleta) que devuelve una enumeración, y tengo una nueva función que devuelve una lista de enumeraciones.Enum obsoleto C#

Uno de los valores de enumeración se utiliza sólo en la función obsoleta, por lo que es posible fijar un miembro de enumeración como obsoleta (ya que no puede estar en la lista)?

+1

¿Ha intentado utilizar la ['ObsoleteAttribute'] (http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.aspx)? –

+2

Necesito ver algún código ... – BoltClock

+8

@BoltClock ¿por qué? Solo quiero establecer una enumeración como obsoleta ... – JohnJohnGa

Respuesta

37

Claro, usted puede:

public enum EE 
{ 
    A, 

    [Obsolete] 
    B 
} 
1

no he intentado esto en una enumeración, pero algo como esto podría funcionar:

[Obsolete("Please use ... instead!")] 
public enum MyEnum 
{ 
    One, 
    Two, 
    Three 
} 
+2

Te sugiero que esperes varios días o semanas para que aparezca una respuesta real, antes de publicar una suposición. En realidad, ¿por qué no probar su suposición en lugar de publicarla, para que pueda publicar una respuesta real o nada? – Spike0xff

+2

Obviamente, poner el atributo 'Obsolete' en el conjunto' enum' no es lo mismo que ponerlo en un solo valor. Parece que OP quiere excluir un valor de 'enumeración' particular. – Phil1970

-1

Como otros han señalado, se puede añadir el ObsoleteAttribute al miembro enum, pero aún se puede usar en tu código. No hay forma de excluir programáticamente al miembro enum, es decir, producir error de compilación o excepción si existe en la enumeración. Agregar el atributo solo avisará al desarrollador al respecto.

+5

Eso es incorrecto, hay una propiedad [IsError] (http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.iserror.aspx) que, si es verdadera, provocará que sea un error del compilador en lugar de una advertencia. –

27

En realidad, es posible generar advertencias del compilador o errores del compilador.

public enum TestEnum 
{ 
    A, 
    [Obsolete("Not in use anymore")] 
    B, 
    [Obsolete("Not in use anymore", true)] 
    C, 
} 

public class Class1 
{ 
    public void TestMethod() 
    { 
     TestEnum t1 = TestEnum.A; //Works just fine. 
     TestEnum t2 = TestEnum.B; //Will still compile, but generates a warning. 
     TestEnum t3 = TestEnum.C; //Will no longer compile. 
    } 
} 

Esto funcionará siempre que utilice un atributo [Obsoleto].