2010-08-19 64 views
3

我有以下代碼:的FxCop禁止警告CA1800(不必要的糞中)

[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'多次。緩存'as' 運算符或直接投射的結果,以消除冗餘鑄造類 指令。

我知道我可以重構此代碼來刪除警告,但它會使代碼不易讀。在這種情況下,我想在這一個功能上禁止這一條消息。

我在做什麼錯?

+0

你能提供代碼示例嗎? – 2010-08-19 14:12:51

回答

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

這當然不會處理類層次結構。 – 2011-02-20 17:34:19

0

我懷疑你的項目文件中包含DEBUGTYPE是沒有的。當設置DebugType爲none時,它不會檢測到抑制代碼。因此,您可以將DebugType更改爲完整,因爲它會正確檢測抑制代碼。

<DebugType>full</DebugType>