Extender 공급자(Extender Provider)란 무엇인가?
Extender 공급자는 다른 컴포넌트에 추가적인 속성(property)을 제공하기 위해 사용되는 특별한 종류의 구성 요소입니다. 가장 대표적인 예시가 바로 ToolTip 컴포넌트입니다.
ToolTip 컴포넌트 예시로 이해하기
폼(Form)에 ToolTip 컴포넌트를 추가하면, 해당 폼 위에 배치된 모든 컨트롤에 자동으로 ToolTip 속성이 새롭게 나타납니다. 흥미로운 점은 이 속성이 컨트롤 자체에 원래 존재하는 것이 아니라, Extender 공급자가 동적으로 제공한다는 것입니다. 따라서 일반 PropertyGrid에서 기본 속성 목록에는 보이지 않습니다.
실제 코드에서는 아래와 같이 SetToolTip 메서드를 호출하여 특정 컨트롤에 툴팁을 지정할 수 있습니다.
myTooltip1.SetToolTip(btn1, "This is ToolTip!");
위 코드를 실행하면 버튼(btn1) 위에 마우스를 올렸을 때 "This is ToolTip!"이라는 툴팁이 화면에 표시됩니다.
Extender 공급자 구성 요소 구현 방법
그렇다면 직접 Extender 공급자를 만들려면 어떻게 해야 할까요? 핵심은 IExtenderProvider 인터페이스를 구현하는 것입니다. 단계별로 살펴보겠습니다.
1단계: 컴포넌트 클래스 정의
먼저 IExtenderProvider 인터페이스를 상속받는 컴포넌트 클래스를 정의합니다.
public class MyExtender : IExtenderProvider {...}
2단계: IExtenderProvider 인터페이스 정의 확인
IExtenderProvider 인터페이스는 다음과 같이 단 하나의 메서드만을 요구합니다.
public interface IExtenderProvider {
bool newExtend(object extendeNew);
}
3단계: newExtend 메서드 구현
마지막으로 newExtend 메서드를 구현해야 합니다. 이 메서드는 전달된 컴포넌트나 컨트롤이 확장 속성을 제공받을 대상인지 판단하는 역할을 합니다. 즉, 속성을 제공할 관련된 모든 컴포넌트 또는 컨트롤에 대해 true를 반환하도록 작성하면 됩니다.
이렇게 구현된 Extender 공급자는 디자이너 환경에서 다른 컨트롤들에 새로운 속성을 동적으로 부여할 수 있어, 재사용 가능한 UI 기능을 만들 때 매우 유용하게 활용됩니다.