默认情况下,自定义对象呈灰色且不可展开:
我知道可以使用ExpandableObjectConverter使它们可扩展,但这需要扩展原始类。
如果我无法修改原来的类怎么办?是否有处理属性网格内的自定义对象扩展的通用方法?
最佳答案
您可以在运行时为 ExpandableObjectConverter
动态添加 TypeConverterAttribute
,使用类似以下内容 (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#!)
关于c# - 在属性网格中扩展自定义对象而不对类进行任何修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151066/