PropertyDescriptor をオーバーライドするのではなく、クラスに追加するにはどうすればよいですか?
-
12-09-2019 - |
質問
を実装するクラスがある場合 ICustomTypeDescriptor オーバーライドできます GetProperties() クラスのすべてのプロパティをカスタムのプロパティに完全に置き換えるメソッド プロパティ記述子.
しかし、クラスの既存のプロパティを保持し、追加のプロパティをクラスに追加したい場合はどうすればよいでしょうか?既存のクラス プロパティに追加されるカスタム プロパティ記述子のセットを返す方法はありますか?
たとえば、ユーザーがプログラム内でプロパティ グリッドに表示されるカスタム プロパティを定義できるようにしたいと考えています。カスタム プロパティの値は、 辞書(文字列キー、オブジェクト値) コレクションに追加したい プロパティ記述子 これにより、キー値に基づいてこのコレクションから値の読み取りと書き込みも行われます。
そうは思わない IExtenderプロバイダー これは、あるクラスのプロパティを別のクラスに追加するだけであるため、機能します。ただし、実行時にプロパティを動的に追加および削除できる必要があります。もらえますか IExtenderプロバイダー も実装するクラス ICustomTypeDescriptor 追加するプロパティを実行時に把握できるようにするためですか?
解決
現在のコレクションに追加するだけでできるはずです。
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{
PropertyDescriptorCollection cols = base.GetProperties(attributes);
cols.Add(); // Add your custom property descriptor here
return cols;
}
所属していません StackOverflow