visual versiones studio sirve que para net evolucion entorno características vb.net visual-studio-2005 compiler-construction

versiones - Cómo suprimir la advertencia del compilador para una función específica en VS2005(VB.Net)



visual basic 2005 (6)

Tengo una clase que hereda de una clase base e implementa lo siguiente ...

Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

Ahora la clase base de la que hereda también implementa este System.IComparable.CompareTo, así que recibo la siguiente advertencia del compilador:

Advertencia: ''System.IComparable.CompareTo'' ya está implementado por la clase base. Reimplementación de la función asumida.

Estoy de acuerdo con eso, así que mi pregunta es cómo puedo suprimir esta advertencia solo por esta función (es decir, no todas las advertencias).

Aclaraciones:

  • Aquí hay un enlace al error en MSDN.
  • Ya he probado tanto Sombras como Modificaciones y tampoco elimina la advertencia.
  • La advertencia no se refiere al método en sí (a menos que se omitan las Sombras o las Oversiones), sino que está específicamente en "Implementa System.IComparable.CompareTo".
  • No estoy buscando suprimir todas las advertencias de este tipo (si surgen), solo esta.

Solución:
Esperaba usar el atributo System.Diagnostics.CodeAnalysis.SuppressMessage o algo así como C # #pragma, pero parece que no hay forma de suprimir la advertencia para una sola línea. Sin embargo, hay una forma de desactivar este mensaje para este proyecto, sin desactivar todas las advertencias.

Edité manualmente el archivo .vbproj e incluí 42015 en el nodo para compilaciones de depuración y publicación. No es ideal, pero es mejor que ver siempre la advertencia en el IDE.

Si alguien tiene una mejor solución, por favor agrégala y con gusto la probaré marque la respuesta.


Agregue la palabra clave Sombras a la definición de la función.

Public Shadows Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo


En lugar de suprimir la advertencia, ¿no deberías solucionarlo? Suponiendo que la base es Overridable,

Public Overrides Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

Si no, luego sombra,

Public Shadows Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

(Creo que esto es correcto, soy un programador de C #. De lo contrario, coméntalo y lo actualizaré).



Solo use ''Implementos'' en la clase base:

Firma en la clase base:

Public Overridable Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

Firma en la clase heredada:

Public Overrides Function CompareTo(ByVal obj As Object) As Integer


En las propiedades de su proyecto, vaya a la pestaña de compilación y use el cuadro de texto de supresión de advertencias.


Si no tiene acceso a la clase base y, por lo tanto, no puede convertir el método en Anulable, puede agregar <NoWarn>42015</NoWarn> al archivo del proyecto.