2

在继续清理我通过 stylecop 和 fxcop 继承的代码库的任务中,来自 fxcop 的警告之一是 CA1801:Something.MyProperty.set(string) 的参数“值”从未使用过。删除参数或在方法体中使用它。

它抱怨的代码是:

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

4

1 回答 1

2

我相信这是因为您收到此警告的“新”关键字。尝试用覆盖替换删除新的,看看警告是否消失。

public class Something : ISomeInterface
    public string MyProperty

顺便说一句,我建议也使用 NotImplementedException 而不是 InvalidOperationException。

于 2010-08-06T15:57:40.857 回答