默认情况下,自定义对象显示为灰色且不可展开:
我知道可以使用ExpandableObjectConverter扩展它们,但这需要扩展原始类。
如果我无法修改原班级怎么办?是否有一种在属性网格中处理自定义对象扩展的通用方法?
答案 0 :(得分:2)
您可以在运行时为TypeConverterAttribute
动态添加ExpandableObjectConverter
,使用类似下面的内容(VB.NET)。
Dim attr = New TypeConverterAttribute(GetType(ExpandableObjectConverter))
TypeDescriptor.AddAttributes(GetType(ExtensionDataObject), attr)
对于您想要展开的每种类型,您需要AddAttribute
。如果类型都在特定的命名空间中,您可以使用反射来查找它们:
Dim assm = Assembly.GetExecutingAssembly() ' or some other assembly
For Each t In assm.GetTypes().Where(Function(x) x.Namespace = "InterestingTypes")
TypeDescriptor.AddAttributes(t, attr)
Next
(抱歉语法高亮 - 我应该使用C#!)