Extender 공급자 개요
extender 공급자는 다른 구성 요소에 속성을 제공하는 구성 요소입니다.예를 들어, ToolTip 구성 요소가 폼에 추가되면 extender 공급자는 해당 폼의 각 컨트롤에 ToolTip이라는 속성을 제공합니다.그러면 ToolTip 속성이 연결된 모든 PropertyGrid 컨트롤에 나타납니다.디자인 타임에 이 속성의 값을 설정할 수 있습니다.
extender 공급자가 제공하는 속성은 실제로 extender 공급자 개체 자체에 있으므로 수정되는 구성 요소의 실제 속성이 아닙니다.디자인 타임에 수정되고 있는 구성 요소와 연결된 모든 PropertyGrid에 이 속성이 나타납니다.그러나 런타임에는 구성 요소 자체를 통해 속성에 액세스할 수 없습니다.대신 ToolTip 구성 요소에서 GetToolTip 메서드를 호출합니다.
구현
다음 목록에서는 extender 공급자 구현에 필요한 단계를 설명합니다.
ProvidePropertyAttribute 특성을 사용하여 extender 공급자가 제공한 속성을 지정합니다.
제공된 속성을 구현합니다.
제공된 속성을 받는 컨트롤을 추적합니다.
IExtenderProvider 인터페이스를 구현합니다.
자세한 내용은 방법: Extender 공급자 구현을 참조하십시오.전체 샘플은 방법: HelpLabel Extender 공급자 구현을 참조하십시오.
ProvideProperty 특성
extender 공급자는 클래스이므로 자체의 속성과 메서드를 가질 수 있습니다.다른 구성 요소에 제공되는 속성으로 지정하려면 클래스 수준에서 ProvidePropertyAttribute 특성을 적용합니다.이 특성은 제공할 속성의 이름과 해당 속성을 제공할 수 있는 개체의 형식을 지정합니다.
제공된 속성 구현
규칙에 따라 제공된 속성은 속성으로 구현되지 않고 한 쌍의 메서드로 구현됩니다.이 메서드의 이름을 GetPropertyName 및 SetPropertyName으로 지정해야 합니다.예를 들어 extender 공급자 구현에서 DemoText라는 속성을 제공할 경우 메서드 이름을 GetDemoText 및 SetDemoText로 지정합니다.
이 메서드는 구성 요소에 할당된 속성 값을 추적할 수 있는 하나의 Component 매개 변수를 사용합니다.
제공된 속성을 받는 컨트롤 추적
제공된 속성을 구현하려면 IDictionary 또는 각 구성 요소의 속성 값을 기록하고 검색하기 위한 기타 컬렉션 개체가 필요합니다.
예를 들어, 구성 요소 인스턴스를 DictionaryEntry에 대한 Key로 사용하고 속성 값을 DictionaryEntry의 Value로 사용할 수 있습니다.GetPropertyName 메서드를 호출하면 구현에서는 컬렉션에서 지정된 구성 요소에 해당하는 속성 값을 쿼리합니다.
IExtenderProvider 인터페이스 구현
모든 extender 클래스는 IExtenderProvider 인터페이스를 구현해야 합니다.이 인터페이스는 부울 값을 반환하고 디자이너에게 구성 요소가 확장 대상인지 여부를 알려 주는 CanExtend라는 단일 메서드로 구성되어 있습니다.
extender 공급자에서는 임의의 구성 요소에 대한 속성을 제공할 수 있지만, 일반적으로 구현에는 특정 범주의 구성 요소에서만 사용할 수 있는 기능이 포함됩니다.예를 들어, 컨트롤에만 속성을 제공하는 extender를 만들 수 있습니다.CanExtend 메서드의 구현에서 이 제약 조건을 적용할 수 있습니다.