39

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 は個々のプロパティに適用され、それらの特定のプロパティがどのようにインターフェースされるかを制御します。

4

1 に答える 1