iCustomtypedescriptor, typedescriptionprovider, typeconverter 및 uitypeeditor
-
09-09-2019 - |
문제
나는 당신이 iCustomtypedescriptor, typedescriptionprovider, typeconverter 및 uitypeeditor를 사용하여 PropertyGrid가 객체와의 인터페이스를 표시하는 방식을 변경하는 방법에 대한 전반적인 이해를 얻으려고 노력하고 있습니다.
누군가 이것이 옳은지 또는 내가 주요 개념이나 포인트를 놓쳤는 지 말해 줄 수 있습니까? 나는 당신이 각 수업을 사용하는 이유와시기를 이해하려고 노력하고 있습니다.
iCustomtypedescriptor
- 클래스 에서이 인터페이스를 구현하면 Cotaly는 클래스의 기본 속성을 무시하고이를 iCustomtypedescriptor.getProperties ()에 의해 반환 된 속성 디스크립터로 대체합니다.
typedescriptionprovider
- 클래스의 기존 속성을 확장하는 데 사용
- typedescriptionprovider가 typedescriptionprovider 속성을 통해 클래스에 추가됩니다.
- typedescriptionprovider의 gettypedescriptor () 메소드는 iCustomtypedescriptor를 반환합니다. 추가 유형의 기존 속성에.
- PropertyGrid는 반사를 통해 발견 된 클래스의 속성과 typedescriptionprovider를 통해 클래스에 추가 된 속성을 모두 보여줍니다.
타이프 콘버터
- 유형간에 변환됩니다
- 속성 그리드에 표시/편집 할 수있는 복잡한 유형과 원시 유형을 변환하는 데 사용되는 PropetyGrid를 사용하는 측면에서.
- typeConverter의 getStandard 값 방법을 사용하여 PropertyGrid의 가능한 값 목록을 표시 할 수도 있습니다.
uitypeeditor
- 복잡한 유형의 속성을 조작하기위한 사용자 정의 편집기를 정의합니다.
- 속성을 통해 속성과 관련이 있습니다.
따라서 ICUSTOMTYPEDESCRIPTOR TYPEDESCRIPTION 제공자는 객체의 전체 속성을 추가/변경/교체하는 데 사용됩니다. TypEconverter 및 UityPeeditor는 개별 특성에 적용되며 해당 특정 특성이 어떻게 인터페이스되는지 제어합니다.
해결책
조정 :
TypeDescriptionProvider
- 아직 대체 메타 데이터 (확장되지 않음)
- 추가 할 수 있습니다
TypeDescriptor.AddProvider
- 인스턴스 별뿐만 아니라 유형 별 적용 할 수 있으므로 구현할 필요없이 목록에 신청할 수 있습니다.
ITypedList
TypeConverter
- ~을 위한
PropertyGrid
, 이것은 또한 메타 데이터를 얻는 데 사용되는 메커니즘입니다. 주목하십시오ExpandableObjectConverter
단순히 대표합니다TypeDescriptor.GetProperties
, 그러나 이것이 항상 그런 것은 아닙니다 - 또한 변경 사항이없는 불변의 물체 (예 : 스트러크) 재창조를 담당합니다.
- ~을 위한
UITypeEditor
- 미리보기 상자를 그림으로 칠할 책임이 있습니다
PropertyGrid
- 미리보기 상자를 그림으로 칠할 책임이 있습니다
추가의:
IExtenderProvider
- 추가 속성; 이것은 당신이 혼란스러워했던 것일 수 있습니다TypeDescriptionProvider
ITypedList
- 광범위하게 쌍둥이ICustomTypeDescriptor
, 그러나 목록을 위해; 사용하면 피할 수 있습니다TypeDescriptionProvider
및 객체가 아닌 인덱서IList
, 즉public T this[int index] {get;}
IListSource
- 데이터 소스와 데이터 사이의 간접성을 제공합니다. 예를 들어, aDataTable
구현IListSource
, 반환DefaultView
요청시
제휴하지 않습니다 StackOverflow