2011-09-20 2 views
0

FxCop을 실행할 때 인터페이스 메서드를 자식 형식으로 호출 할 수 있어야한다는 오류가 발생합니다.FXCop 규칙 자식 메서드로 인터페이스 메서드를 호출 할 수 있어야합니다.

'확인'MenuPreview이 '(이 클래스가 이전에 제공 한 경우 주요 변경) 밀봉 이 아닌 명시 적으로 메소드를 구현하거나 기능을 노출하는 새로운 방법을 구현 :

다음과 같은 해상도 상태

'IComponentConnector.Connect (int, object)' 이며 파생 클래스에서 볼 수 있습니다. "

Window 나 다른 UI 클래스에서 파생 된 모든 클래스에 대해이 값을 얻습니다. 이것은 무시할 수있는 가련한 청어입니까, 아니면해야 할 일이 있습니까?

답변

0

인터페이스가 명시 적으로 구현 된 경우 파생 클래스가 인터페이스 동작을 변경하고 기본 클래스 동작을 사용하는 것이 불가능할 것이라고 생각합니다. 명시적인 인터페이스 구현이 필요한 경우 이러한 어려움을 극복하는 일반적인 패턴은 인터페이스에 보호 된 가상 메서드를 호출하고 인터페이스의 동작을 재정의하려는 모든 파생 클래스를 호출하는 것입니다. protected 가상 메소드

IDisposable.Dispose()를 고려하십시오. 명시 적 구현의 코드가 실제로 처분을 수행하는 책임이있는 경우 파생 클래스가 IDisposable을 다시 구현하는 것 외에는 자체 디스 페션 논리를 추가 할 방법이 없으며 IDisposable을 다시 구현 한 클래스가 해당 구현에 액세스 할 수있는 방법이 없습니다. 부모의 Dispose 메서드. Microsoft는 IDisposable.Dispose를 다른 이름으로 보호 된 함수를 호출 할 수 있었지만 동일한 이름을 사용하지만 Boolean 형식의 더미 매개 변수를 추가하는 것으로 선택했습니다.