c# parameters deprecated obsolete

¿Cómo puedo marcar un parámetro específico como obsoleto/obsoleto en C#?



parameters deprecated (5)

Respuesta corta:

Deberá crear un nuevo método con la nueva firma y marcar el actual como obsoleto.

Respuesta más larga

¡Lo que quiere evitar a toda costa es un salto de código! Entonces, particularmente en el marco de una empresa, quiere anunciar que su método ya no será compatible, por ejemplo, pero no quiere ser responsable de las soluciones dependientes para fallar debido a una decisión de arquitectura o diseño o su lado, ¿verdad?

La clase ObsoleteAttribute hará el truco por ti.

Una vez que un miembro de la clase se haya marcado como obsoleto, se generará una advertencia en el lado del cliente, los que usan su marco, para continuar de esa manera, o incluso uno de sus colegas en el mismo proyecto.

public class MyClass { [Obsolete("This method should no longer be used, please use MyNewMethod() instead.")] public void MyMethod(string name, long phoneNumber, long faxNumber) { } public void MyNewMethod(string name, long phoneNumber, long faxNumber, string email) { } }

Esto anunciará que MyMethod ya no es compatible con todos los usuarios de su código.

Después de un cierto período de tiempo, lo suficientemente razonable para permitir que todos cambien su código, puede indicar a este atributo que muestre un mensaje de error cuando su método obsoleto aún se usa en el código.

public class MyClass { [Obsolete("This method should no longer be used, please use MyNewMethod() instead.", true)] public void MyMethod(string name, long phoneNumber, long faxNumber) { } public void MyNewMethod(string name, long phoneNumber, long faxNumber, string email) { } }

Al establecer el segundo parámetro del constructor de la clase ObsoleteAttribute en true , usted le dice al compilador que anuncie el uso de este método como un error.

Solo después de un tiempo, puede eliminar completamente su método de su código para limpiarlo un poco. Esto es parte de los métodos de refactorización promovidos por la metodología de desarrollo de software ágil.

¿Esto ayuda?

Me gustaría poder mantener una API de C # igual que ahora, pero simplemente desaprobar uno de los parámetros en una llamada de método. ¿Es posible hacerlo o necesito crear un nuevo método sin el parámetro y marcar el original como Obsoleto?


Con el atributo Obsoleto:

[Obsolete("Please use void AnotherMethod() instead", false)] void SomeMethod(Int32 data){ }

El valor booleano en el atributo le dice al compilador que genere una advertencia, si lo cambia a verdadero, el compilador generará un error. Vea ObsoleteAttribute para la documentación en él.


Creo que sería mejor crear un nuevo método.

¿Qué quieres decir con hacer que el parámetro sea obsoleto? ¿Depende esto de un valor específico para ese argumento? Cuando llamas a un método, siempre tienes que especificar el argumento de todos modos.


Sí, creo que la única forma es crear un nuevo método sin el parámetro y marcar el original con ObsoleteAttribute .


Sí. Solo puede ObsoleteAttribute parámetros ObsoleteAttribute , no individuales. Sin embargo, podría sobrecargar el método, manteniendo así el mismo nombre y marcando el antiguo como obsoleto:

class Act { [Obsolete("DoSomething(int, int) is obsolete", false /*warn only*/)] public void DoSomething(int i, int j) { } public void DoSomething(int i) { } }