ICustomTypeDescriptor、TypeDescriptionProvider、TypeConverter、および UITypeEditor を使用して、PropertyGrid の表示方法とオブジェクトとのインターフェイス方法を変更する方法を全体的に理解しようとしています。
これが正しいかどうか、または主要な概念やポイントを見逃していないかどうか、誰か教えてもらえますか? なぜ、いつ各クラスを使用するのかを理解しようとしています。
ICustomTypeDescriptor
- このインターフェイスをクラスに実装すると、クラスのネイティブ プロパティが完全にオーバーライドされ、ICustomTypeDescriptor.GetProperties() によって返される PropertyDescriptors に置き換えられます。
TypeDescriptionProvider
- クラスの既存のプロパティを拡張するために使用されます
- TypeDescriptionProvider は、TypeDescriptionProvider 属性を介してクラスに追加されます
- TypeDescriptionProvider の GetTypeDescriptor() メソッドは、型の既存のプロパティに追加される ICustomTypeDescriptor を返します。
- PropertyGrid は、Reflection によって検出されたクラスのプロパティと、TypeDescriptionProvider によってクラスに追加されたプロパティの両方を表示します。
タイプコンバーター
- タイプ間の変換
- プロパティ グリッドで表示/編集できる複合型とプリミティブ型の間の変換に使用される PropertyGrid の使用に関して。
- TypeConverter の GetStandard 値メソッドを使用して、プロパティ グリッドで可能な値のリストを表示することもできます。
UITypeEditor
- 複合型のプロパティを操作するためのカスタム エディターを定義します。
- 属性を介してプロパティに関連付けられます。
そのため、ICustomTypeDescriptor TypeDescription プロバイダーは、オブジェクトのプロパティ全体を追加/変更/置換するために使用されます。TypeConverter と UITypeEditor は個々のプロパティに適用され、それらの特定のプロパティがどのようにインターフェースされるかを制御します。