사용자 지정 컨트롤이 두 개 있습니다 (CustomTextBox
및 CustomNumericUpDown
). 몇 가지 방법과 몇 가지 속성으로 구성된 공유 된 동작을 원합니다. 공유 동작을 포함하는 추상 클래스를 확장해야다른 사용자 정의 컨트롤간에 동작을 공유하는 방법?
- 모두 :
솔루션은 내가 함께했다. 문제는 하나가
TextBox
을 확장하고 다른 하나가NumericUpDown
을 확장한다는 것입니다. C#에서 허용되지 않는 다중 상속을 제외하고는 둘 다 내 추상 클래스를 상속하는 방법을 생각할 수 없습니다. - 공유 인터페이스를 구현하십시오. 이것은 인터페이스가 구현을 가질 수 없기 때문에 분명히 어리 석다.
- 확장 방법 사용. 보다 구체적으로 말하자면, 둘 다 인터페이스를 공유하고이 인터페이스의 확장 메소드를 작성하십시오. 문제는 you cannot (currently) have extension properties in C#이며, 실제로는 getter 및 setter를 the principle of least astonishment로 인해 실제 메소드를 사용하여 구현하고 싶지 않습니다.
반복적 인 코드가 포함되지 않은이 문제에 대한 우아한 접근 방식이 있습니까?
편집 : 예를 들어
, 나는 ValidateInput()
방법 및 ValidationRules
속성을 가지고 CustomTextBox
및 CustomNumericUpDown
모두를 원한다. 즉, 둘 다 메소드와 속성을 추가하려고합니다.
[특성] (https://en.wikipedia.org/wiki/Trait_(computer_programming))에 대해 설명하는 것처럼 들립니다. _default 인터페이스 methods_에 대한 지원은 [제안]되었습니다 (https : // github.com/dotnet/csharplang/blob/master/proposals/default-interface-methods.md) 향후 버전의 C# – lesscode
"공유 된 동작"은 개별 파생 컨트롤의 특성에 의존하거나 공통 기본 제어 클래스? – lesscode
@lesscode, 개별 파생 컨트롤의 특성에 의존합니다 ... – Sipo