2010-08-06 83 views
2

繼續執行清理我通過stylecop和fxcop繼承的代碼庫,以及fxcop中的警告之一是CA1801:參數'值Something.MyProperty.set(字符串)永遠不會被使用。刪除參數或在方法體中使用它。FXCop警告CA1801:「參數從未被使用......」在重寫的繼承抑制屬性

它抱怨的代碼的是:

public class Something : ISomeInterface 
    public new string MyProperty 
    { 
     get 
     { 
      throw new InvalidOperationException("MyProperty is not implemented."); 
     } 

     set 
     { 
      throw new InvalidOperationException("MyProperty is not implemented."); 
     } 
    } 

此屬性在接口中定義,但在這種情況下,不需要在派生類中 - 除了稍微可疑使用InvalidOperationException異常,而不是NotImplementedException的,我認爲這很常見,我想知道是否應該在FXCop中排除警告,並附上說明原因的說明?

我看不出還有什麼我可以做的最佳實踐方面,以防止在FXCop中的警告,除了重構此特定屬性到第二個接口,然後更新所有其他類使用此接口?我想我可能只是回答了我自己的問題? :D

+0

實際上,在這種情況下應該使用NotSupportedException。 NotImplementedException意味着表示開發人員尚未完成方法的代碼。有關詳細信息,請參閱http://blogs.msdn.com/b/brada/archive/2004/07/29/201354.aspx。 – 2010-08-06 16:37:34

+0

是的,你確實是對的,謝謝你! – 2010-08-09 09:14:42

回答

2

我認爲這是因爲您收到此警告的「新」關鍵字。嘗試 替代 刪除新的 覆蓋 並查看警告是否消失。

public class Something : ISomeInterface 
    public string MyProperty 

順便說一下,我建議使用NotImplementedException而不是InvalidOperationException。

+0

其實,改變它覆蓋似乎解決了它,但不完全確定我明白爲什麼! :D – 2010-08-06 16:03:40

+0

此外,這需要基本屬性被虛擬定義以便能夠覆蓋它。 – 2010-08-06 16:15:28

+0

@安德魯,啊..對不起,我錯過了這個。既然它是一個界面,你可以刪除新的。 New將創建另一個方法簽名,而不實現該接口。 – 2010-08-06 16:18:27