什么是ICustomTypeDescriptor以及何时使用它?

时间:2011-10-03 21:36:13

标签: c# .net icustomtypedescriptor

我不明白它是什么以及何时使用它。 MSDN没有帮助我。 MSDN声明ICustomTypeDescriptor提供一个为对象提供动态自定义类型信息的接口。

2 个答案:

答案 0 :(得分:9)

有许多资源可用于显示ICustomTypeDescriptor界面的不同用例,但简而言之,典型的用例是提供标准TypeDescriptor提供的自定义类型说明。很少实现该接口,而无需返回自定义成员描述符,例如自定义PropertyDescriptor

Type Descriptor Overview from the MSDN是一个很好的资源,可能有助于进一步明确目的和用法。

答案 1 :(得分:0)

在MVVM中,您应该将ViewModels创建为普通的C#类,以暴露可以绑定到控件的属性,并可能在更改属性值时实现INotifyPropertyChanged来发布通知,以便绑定的控件可以注意到。 WPF将使用反射来发现ViewModel类的属性。

但是,可以想到您可能不希望WPF使用反射来发现对象的属性。可以想象,您的ViewModel甚至可能没有实现C#属性,而是可能使用其他某种机制公开命名的值。例如,您可以构建一个通用的ViewModel,它包含一个填充了命名值的IDictionary<string,object>。如果ICustomTypeDescriptor不存在,则将无法执行此操作。 ICustomTypeDescriptor告诉WPF不要使用反射来发现ViewModel的属性,而是通过调用ICustomTypeDescriptor接口的方法来发现它们。

可以在这里找到更多内容:https://docs.microsoft.com/en-us/archive/msdn-magazine/2005/april/net-matters-icustomtypedescriptor-part-1