Domanda

Ho il seguente codice:

[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
}

Tuttavia, quando corro su questo FxCop Classe / Funzione genera ancora l'Attenzione

  

Attenzione: CA1800: Microsoft.Performance: 'table', un parametro, è   cast di tipo 'xxx' più volte nel metodo   'Ccc.SetTestConnectionString (Component)'. Cache il risultato del 'come'   operatore o getto diretto in modo da eliminare il castclass ridondante   istruzioni.

Lo so che potrei refactoring questo codice per rimuovere l'avviso, ma sarebbe rendere il codice meno leggibile. In questo caso vorrei sopprimere questo messaggio in questa una funzione.

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Controlla se è stato definito il simbolo del preprocessore CODE_ANALYSIS nelle proprietà del progetto.

Date un'occhiata a: http: // msdn .microsoft.com / en-us / library / system.diagnostics.codeanalysis.suppressmessageattribute.aspx

Altri suggerimenti

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
}

ho il sospetto il file di progetto contiene il DEBUGTYPE è nessuno. Una volta impostato il DEBUGTYPE è nessuno, non rilevare il codice di sopprimere. Così si può cambiare il DEBUGTYPE a pieno, perché in grado di rilevare il codice di sopprimere in modo corretto.

<DebugType>full</DebugType>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top