14

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

4

2 回答 2

10

有很多可用的资源展示了ICustomTypeDescriptor接口的不同用例,但简而言之,典型的用例是提供标准TypeDescriptor提供之外的自定义类型描述。该接口很少在不需要返回自定义成员描述符(例如 custom )的情况下实现PropertyDescriptor

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

于 2011-10-03T23:01:56.113 回答
1

在 MVVM 中,您应该将 ViewModel 创建为普通的 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

于 2020-12-09T21:59:43.690 回答