C# 转换列表<;MyClass>;属性转换为c中与PropertyGrid兼容的属性项#

C# 转换列表<;MyClass>;属性转换为c中与PropertyGrid兼容的属性项#,c#,propertygrid,C#,Propertygrid,我有一个具有许多属性的基类。其中包括一个包含元数据的扩展属性列表。这是一个自定义类的列表,其中包含DisplayName、Description、Name、Type和Value属性以帮助PropertyGrid 期望的最终结果是PropertyGrid,它显示了与上面列表中的扩展属性合并的基类属性。我不希望PropertyGrid将我的列表显示为单个条目,而是将每个扩展属性与我的基类属性合并。本质上,PropertyGrid相信我的扩展属性列表是对象的第一类属性 这可以使用反射或动态类型描述符吗

我有一个具有许多属性的基类。其中包括一个包含元数据的扩展属性列表。这是一个自定义类的列表,其中包含DisplayName、Description、Name、Type和Value属性以帮助PropertyGrid

期望的最终结果是PropertyGrid,它显示了与上面列表中的扩展属性合并的基类属性。我不希望PropertyGrid将我的列表显示为单个条目,而是将每个扩展属性与我的基类属性合并。本质上,PropertyGrid相信我的扩展属性列表是对象的第一类属性


这可以使用反射或动态类型描述符吗?

使用自定义类型转换器应该相当简单

像这样的事情将是一个开始:

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));
}

谢谢你,莱皮,你能把这个放到上下文中吗。i、 这是我的ExtendedProperty类的自定义类型转换器还是我的基类的自定义类型转换器?此外,对于PropertyDescriptorCollection(Targeted framework=3.5),intellisense中不会出现Concat。这将是一个应用于派生类的类型转换器。”Concat'是一个伪函数,您需要编写它:)