我有以下代码:
[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'的结果 运算符或直接强制转换以消除冗余的转换类 指令。
我知道我可以重构此代码以删除警告,但是它会降低代码的可读性。在这个例子中,我想在这一个函数上抑制这一条消息。
我做错了什么?
答案 0 :(得分:5)
检查您是否在项目属性中定义了预处理程序符号CODE_ANALYSIS。
答案 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>