Frage

Ich habe den folgenden Code:

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

Allerdings, wenn ich FxCop über diese Klasse / Funktion ausführen erzeugt es immer noch die Warnung

  

Warnung: CA1800: Microsoft.Performance: 'table', einen Parameter, ist   cast type ‚xxx‘ mehrfach in Verfahren   'Ccc.SetTestConnectionString (Komponente)'. Cachen das Ergebnis des ‚als‘   Operator oder direkt gegossenen, um die redundante castclass zu beseitigen   Anweisung.

Ich weiß, dass ich diesen Code Refactoring könnte die Warnung zu entfernen, aber es wäre der Code weniger lesbar machen. In diesem Fall würde Ich mag diese eine Nachricht auf dieser Funktion zu unterdrücken.

Was mache ich falsch?

War es hilfreich?

Lösung

Überprüfen Sie, ob Sie die Präprozessorsymbol CODE_ANALYSIS in den Eigenschaften Ihres Projekts definiert.

Haben Sie einen Blick auf: http: // msdn .microsoft.com / en-us / library / system.diagnostics.codeanalysis.suppressmessageattribute.aspx

Andere Tipps

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
}

Ich vermute, dass die Projektdatei enthält die DEBUGTYPE keine ist. Wenn Satz der DEBUGTYPE keine ist, wird es nicht die Unterdrückungs-Code erkennen. So ermitteln Sie den DEBUGTYPE auf volle ändern kann, weil sie richtig den Unterdrückungs-Code erkennt.

<DebugType>full</DebugType>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top