FXCop抑制警告CA1800(不必要的演员)

时间:2010-08-19 14:10:58

标签: c# fxcop suppression

我有以下代码:

[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',一个参数,是   在方法中多次强制输入'xxx'   'ccc.SetTestConnectionString(成分)'。缓存'as'的结果   运算符或直接强制转换以消除冗余的转换类   指令。

我知道我可以重构此代码以删除警告,但是它会降低代码的可读性。在这个例子中,我想在这一个函数上抑制这一条消息。

我做错了什么?

3 个答案:

答案 0 :(得分:5)

检查您是否在项目属性中定义了预处理程序符号CODE_ANALYSIS。

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

答案 1 :(得分: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
}

答案 2 :(得分:0)

我怀疑你的项目文件包含DebugType是none。设置DebugType为none时,它不会检测抑制代码。因此,您可以将DebugType更改为full,因为它将正确检测抑制代码。

<DebugType>full</DebugType>