.NET PropertyDescriptor上的PropertyType和ComponentType有什么区别?

该文档并没有真正解释

PropertyType在派生类中重写时,获取属性的类型。

ComponentType在派生类中重写时,获取此属性绑定到的组件的类型。

最佳答案

就常规财产而言:

class Foo
{
    public int Bar { get; set; }
}

如果现在我们通过Foo.Bar查看TypeDescriptor,则组件类型为Foo;属性类型为Int32。基本上,ComponentType是属性的DeclaringType(以反射术语而言)。因此,如果您正在编写自定义的PropertyDescriptor实现,则PropertyType是数据的类型,而ComponentType是目标实例的预期类型。

10-08 05:06