Pregunta

Tengo el siguiente código:

[SuppressMessage( "Microsoft.Performance", "CA1800:DoNotCastUnnecessarily" )]
private static void SetTestConnectionString( Component table )
{
    if( table is Object1 )
    {
        fn1( (Object1)table );
    }
    // ... a few more if statements for different Classes
}

Sin embargo, cuando corro FxCop sobre esta clase / función que todavía genera la advertencia

  

advertencia: CA1800: Microsoft.Performance: 'mesa', un parámetro, es   Reparto de tipo 'xxx' varias veces en el método   'Ccc.SetTestConnectionString (Componente)'. Almacenar en caché el resultado del 'como'   operador o fundición directa con el fin de eliminar la redundancia castclass   de instrucciones.

Sé que podría refactorizar el código para eliminar la advertencia, sin embargo, sería que el código sea menos legible. En este caso me gustaría suprimir este mensaje en este una función.

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Comprobar si ha definido el símbolo de preprocesador CODE_ANALYSIS en las propiedades de su proyecto.

Para consultar: http: // MSDN .microsoft.com / es-es / library / system.diagnostics.codeanalysis.suppressmessageattribute.aspx

Otros consejos

private static void SetTestConnectionString( Component table )
{
    if( table.GetType() == typeof(Object1) )
    {
        Object1 object1 = (Object1)table;
        fn1( object1 );
    }
    // ... a few more if statements for different Classes
}

sospecho que el archivo de proyecto contiene la DEBUGTYPE hay ninguno. Cuando se establece la DEBUGTYPE hay ninguno, no se detecta el código de supresión. Por lo que puede cambiar el DEBUGTYPE al completo, ya que detectará el código reprimir adecuadamente.

<DebugType>full</DebugType>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top