2008-11-07 7 views
6

tengo una clase que hereda de una clase base y pone en práctica el siguiente ...Cómo suprimir compilador de advertencia para la función específica en VS2005 (VB.Net)

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

Ahora la clase base que es heredera también implementa este System.IComparable.CompareTo por lo que estoy recibiendo la siguiente advertencia del compilador:

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

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

Aclaraciones:

  • Aquí es un link al error en MSDN.
  • Ya he probado las Sombras y las Anulaciones y tampoco elimina la advertencia.
  • La advertencia no está en el 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 busco suprimir todas las advertencias de este tipo (si surgen), solo esta.

Solución:
Tenía la esperanza de utilizar el atributo System.Diagnostics.CodeAnalysis.SuppressMessage o algo así #pragma C# 's, pero parece que no hay manera 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 solución mejor, por favor agréguela y con mucho gusto la probaré marque la respuesta.

Respuesta

9

Sólo use 'Instrumental' 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 
+1

Esta es la única respuesta correcta. El texto de la advertencia implica esto: eso es lo que significa lo "supuesto", a saber, que las sustituciones por sí solas garantizarán que se llame al método correcto si la instancia es la clase heredada, pero no es muy claro. – McKenzieG1

-1

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

+0

No busco suprimir todas las advertencias para este proyecto, solo esta. –

+0

No suprimiría todos los mensajes, ya que puede especificarlos con códigos de mensaje para suprimir. Verifique mi respuesta abajo. –

-1

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 
+0

Ha intentado con Sombras y modificaciones, pero desactive la advertencia por desgracia. –

-1

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

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

Si no, entonces la sombra que,

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

(creo que esto es correcto, yo soy un programador de C#. Si no es así, por favor, comentario y voy a actualizar .)

+0

Intentó ambas sombras y anulaciones, ni eliminar la advertencia por desgracia. –

1

Puede usar las advertencias de supresión solo para suprimir una advertencia. Consulte aquí para more sobre cómo hacerlo. También puede usar el SuppressMessage Attribute.

0

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

Cuestiones relacionadas