4

いくつかのプロパティを持つ基本クラスがあります。これには、メタデータを含む拡張プロパティのリストが含まれています。これは、PropertyGrid を支援する DisplayName、Description、Name、Type、および Value プロパティを含むカスタム クラスのリストです。

望ましい最終結果は、上記のリストの拡張プロパティとマージされた基本クラス プロパティを示す PropertyGrid です。PropertyGrid でリストを 1 つのエントリとして表示するのではなく、各拡張プロパティを基本クラスのプロパティとマージする必要があります。基本的に、PropertyGrid は、拡張プロパティのリストがオブジェクトのファースト クラス プロパティであると考えています。

これは、リフレクションまたは動的型記述子を使用して可能ですか?

4

1 に答える 1

1

カスタム TypeConverter を使用すると、かなり単純になるはずです。

このようなものが始まりです:

public override bool GetPropertiesSupported(ITypeDescriptorContext context)
{
  return true;
}

public override PropertyDescriptorCollection GetProperties(
    ITypeDescriptorContext context, object value, Attribute[] attributes)
{
  return base.GetProperties(context, value, attributes).
    Concat(TypeDescriptor.GetConverter(typeof(TheBaseType)).
    GetProperties(context, value, attributes));
}
于 2009-07-28T17:00:13.643 に答える