Interface FXCop规则接口方法应可由子类型调用

Interface FXCop规则接口方法应可由子类型调用,interface,fxcop,Interface,Fxcop,当运行FxCop时,我得到一个错误,接口方法应该可以由子类型调用 决议声明如下: 如果该类以前已发布,则将“MenuPreview”密封为突破性更改, 非显式地实现该方法,或实现公开 “IComponentConnector.Connection,对象”的功能 并且对派生类可见 对于从窗口派生的所有类或其他一些UI类,我都会得到这个结果。这是我可以忽略的一条红鲱鱼,还是我应该做些什么?我认为问题在于,如果接口是显式实现的,派生类就不可能同时更改接口行为和使用基类行为。在需要显式接口实现的情况下,

当运行FxCop时,我得到一个错误,接口方法应该可以由子类型调用

决议声明如下:

如果该类以前已发布,则将“MenuPreview”密封为突破性更改, 非显式地实现该方法,或实现公开 “IComponentConnector.Connection,对象”的功能 并且对派生类可见


对于从窗口派生的所有类或其他一些UI类,我都会得到这个结果。这是我可以忽略的一条红鲱鱼,还是我应该做些什么?

我认为问题在于,如果接口是显式实现的,派生类就不可能同时更改接口行为和使用基类行为。在需要显式接口实现的情况下,绕过此困难的一种常见模式是让接口只调用受保护的虚拟方法,而让任何希望重写接口行为的派生类通过受保护的虚拟方法来实现

考虑IDisposable.Dispose。如果显式实现中的代码实际负责执行处置,则派生类将无法添加自己的处置逻辑,除非重新实现IDisposable,并且重新实现IDisposable的类将无法访问其父类的dispose方法。虽然Microsoft可以使用IDisposable.Dispose调用具有不同名称的受保护函数,但它选择使用相同的名称,但添加了布尔类型的伪参数