속성과 메서드를 지정하려는 일부 사용자 정의 컨트롤이 있습니다.인터페이스와 기본 클래스가 섞여 있고,이를 구현하는 올바른 방법입니다.
그들은 모두 "Foo"및 "Bar"와 같은 속성을 갖고 있기 때문에 기본 클래스를 상속합니다. 기본 클래스를 사용한 이유는 각 속성에서 모든 속성을 수동으로 구현하지 않아도되기 때문입니다. 수업.
그러나 기본 클래스는 메서드를 "수행"하는 방법을 모르기 때문에 기본 클래스가 아닌 파생 클래스에만있는 메서드가 필요하므로 인터페이스를 사용하려고 생각하고 있습니다. 이것 때문에. 기본 클래스에 넣으면 값을 반환하도록 몸체를 정의해야하며 (잘못된 것임) 항상 재정의하는 메서드가 기본을 호출하지 않는지 확인해야합니다. 메소드
기본 클래스와 인터페이스를 사용하여 메소드를 노출하는 올바른 방법이 있습니까? 매우 둥근 것 같지만, 생각하는 모든면이 잘못되었다고 생각합니다 ...
질문이 명확하지 않으면 알려주세요. 아마도 바보 같은 질문 일 것입니다.하지만이 일을 올바르게하고 싶습니다.
EDIT : 훌륭한 추상 제안을 가진 모든 사람들에게 감사합니다. 그러나 이것은 디자이너를 해치 웁니다. abstract가 선택 가능하지 않은 옵션이라면 어떻게 할 것입니까?
기본 클래스로 이동하여 NotImplemented 예외를 throw하기로 결정했습니다. 아마 최선의 디자인은 아니지만 모든 단일 파생 클래스에 많은 속성을 구현하지 않아도되고 누군가가이 메서드를 구현하는 것을 잊어 버리면 문제가됩니다. 만약 내가 대신 컴파일 오류로 만들 수 있다면. 의견을 보내 주셔서 감사합니다. 도움을 주실만한 다른 사람이있는 경우 댓글을 남겨주세요. –
구성 요소가 특정 인터페이스를 구현하도록 요구할 수 있습니다. 삽입 가능한 UI 구성 요소를 추가 할 패널이 있다고 가정 해 보겠습니다. add 메서드는 플러그 가능한 컴포넌트 인터페이스, 즉 Plug1 : BaseControl, IPluggable {...}을 요구할 수 있습니다. void AddComponent (IPluggable componentToAdd) {...} –
예. 이것은 원래 했었지만 구현해야하는 것을 피하기를 바랬습니다. 기본 클래스와 인터페이스 둘 다 멤버들에게 전화하기 위해 앞뒤로 전환해야만합니다 –