.NET PropertyDescriptor上的PropertyType和ComponentType有什么区别?
该文档并没有真正解释
PropertyType在派生类中重写时,获取属性的类型。
ComponentType在派生类中重写时,获取此属性绑定到的组件的类型。
最佳答案
就常规财产而言:
class Foo
{
public int Bar { get; set; }
}
如果现在我们通过
Foo.Bar
查看TypeDescriptor
,则组件类型为Foo
;属性类型为Int32
。基本上,ComponentType
是属性的DeclaringType
(以反射术语而言)。因此,如果您正在编写自定义的PropertyDescriptor
实现,则PropertyType
是数据的类型,而ComponentType
是目标实例的预期类型。