Extender 공급자 개요

업데이트: 2007년 11월

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로 사용하고 속성 값을 DictionaryEntryValue로 사용할 수 있습니다. GetPropertyName 메서드를 호출하면 구현에서는 컬렉션에서 지정된 구성 요소에 해당하는 속성 값을 쿼리합니다.

IExtenderProvider 인터페이스 구현

모든 extender 클래스는 IExtenderProvider 인터페이스를 구현해야 합니다. 이 인터페이스는 부울 값을 반환하고 디자이너에게 구성 요소가 확장 대상인지 여부를 알려 주는 CanExtend라는 단일 메서드로 구성되어 있습니다.

extender 공급자에서는 임의의 구성 요소에 대한 속성을 제공할 수 있지만, 일반적으로 구현에는 특정 범주의 구성 요소에서만 사용할 수 있는 기능이 포함됩니다. 예를 들어, 컨트롤에만 속성을 제공하는 extender를 만들 수 있습니다. CanExtend 메서드의 구현에서 이 제약 조건을 적용할 수 있습니다.

참고 항목

작업

방법: Extender 공급자 구현

방법: HelpLabel Extender 공급자 구현

기타 리소스

디자인 타임 지원 확장