質問

次のコードがあります。

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

しかし、私が走るとき FxCop このクラス/関数で、それはまだ警告を生成します

警告:CA1800:Microsoft.performance: 'table'、パラメーターは、メソッド 'ccc.settestconnectionstring(コンポーネント)'で複数回「xxx」と入力するためにキャストされます。冗長なキャストクラス命令を排除するために、「AS」オペレーターまたはダイレクトキャストの結果をキャッシュします。

このコードをリファクタリングして警告を削除できることはわかっていますが、コードの読み取りが低下します。この例では、この1つの関数に関するこのメッセージを抑制したいと思います。

私は何が間違っているのですか?

役に立ちましたか?

解決

プロジェクトのプロパティでプリプロセッサシンボルCode_analysisを定義したかどうかを確認してください。

見て: http://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysis.suppressmessageattribute.aspx

他のヒント

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
}

あなたのプロジェクトファイルにはDebugTypeが含まれていると思われます。 DebugTypeの設定がありませんが、抑制コードは検出されません。したがって、デバッグタイプを完全に変更できます。これは、抑制コードを適切に検出するためです。

<DebugType>full</DebugType>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top