3

次のコードがあります。

[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(Component)' で型 'xxx' に複数回キャストされています。冗長な castclass 命令を排除するために、'as' 演算子または直接キャストの結果をキャッシュします。

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

私は何を間違っていますか?

4

3 に答える 3

5

プロジェクトのプロパティでプリプロセッサ シンボル CODE_ANALYSIS を定義したかどうかを確認します。

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

于 2010-08-19T14:13:08.700 に答える
0
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
}
于 2011-02-20T17:29:48.107 に答える