有没有办法从自定义 TypeDescriptionProvider 访问 ITypeDescriptorContext 或 IServiceProvider 对象?

Is there a way to access an ITypeDescriptorContext or an IServiceProvider object from a custom TypeDescriptionProvider?

这似乎是 TypeDescriptor 动态元数据架构中的一个奇怪缺口。所有 TypeConverterUITypeEditor 和其他动态设计器、编辑器和转换器 classes 都提供对 IServiceProvider 对象的访问,该对象允许将设计上下文传递给实现 classes.

出于某种原因,TypeDescriptionProviderCustomTypeDescriptor 和相关接口中完全没有这个。有什么方法可以在动态扩展 class 的 metadata/properties 时访问编辑器设计上下文?

经过深思熟虑,我得出结论,这可以通过创建由设计者自己提供的动态 TypeDescriptionProvider 实现来解决。此实现可以通过某些特定于域的 属性.

直接接收上下文

然后可以使用 TypeDescriptor.AddProvider 方法关联动态类型描述提供程序,传入自定义提供程序和目标类型。