【发布时间】:2011-10-03 21:36:13
【问题描述】:
我不明白它是什么以及何时使用它。 MSDN 没有帮助我。 MSDN 声明 ICustomTypeDescriptor 提供了一个接口,为对象提供动态自定义类型信息。
【问题讨论】:
标签: c# .net icustomtypedescriptor
我不明白它是什么以及何时使用它。 MSDN 没有帮助我。 MSDN 声明 ICustomTypeDescriptor 提供了一个接口,为对象提供动态自定义类型信息。
【问题讨论】:
标签: c# .net icustomtypedescriptor
有很多可用的资源显示ICustomTypeDescriptor 接口的不同用例,但简而言之,典型用例是提供标准TypeDescriptor 提供之外的自定义类型描述。该接口很少在不需要返回自定义成员描述符(例如自定义PropertyDescriptor)的情况下实现。
Type Descriptor Overview from the MSDN 是一个很好的资源,可能有助于进一步阐明用途和用法。
【讨论】:
在 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
【讨论】: