ICustomTypeDescriptorを実装するクラスがある場合は、 GetProperties()メソッドをオーバーライドして、クラスのすべてのプロパティをカスタムPropertyDescriptorsに完全に置き換えることができます。
しかし、クラスの既存のプロパティを保持し、クラスに追加のプロパティを追加したい場合はどうなりますか?既存のクラスプロパティに追加されるカスタムプロパティ記述子のセットを返す方法はありますか?
たとえば、プロパティグリッドに表示されるカスタムプロパティをユーザーがプログラムで定義できるようにしたいとします。カスタムプロパティの値はDictionary(文字列キー、オブジェクト値)コレクションに格納されます。また、キー値に基づいてこのコレクションから値を読み書きするPropertyDescriptorsを追加したいと思います。
IExtenderProviderは、あるクラスのプロパティを別のクラスに追加するだけなので、機能しないと思います。ただし、実行時にプロパティを動的に追加および削除できる必要があります。ICustomTypeDescriptorも実装するIExtenderProviderクラスを使用して、追加するプロパティを実行時に把握できるようにすることはできますか?