结论:可以
验证demo如下:
运行winform程序输出:
小注:
typedescriptor.getproperties用来setvalue这没有作用:
那么为什么typedescriptor.getproperties用来setvalue没有效果呢?
将上面的代码拆成如下两句:
单点跟踪进去,可以发现:
在获取到propertydescriptor这个抽象类的实例后,在调用setvalue方法的时候,是从其子类reflectpropertydescriptor调用的。
而具体的实现是在子类:reflectpropertydescriptor中,从微软源码中找到reflectpropertydescriptor及setvalue
从代码中可以看出来,只读属性直接被跳过去了。。。。。。
那么propertyinfo有没有什么限制呢?
propertyinfo调用的setvalue如下所示:
在微软开源的代码中可以找到其具体实现如下:
暂时没有看到propertyinfo调用的setvalue有什么限制
<a target="_blank" href="https://msdn.microsoft.com/zh-cn/library/scfx0019">propertyinfo.getsetmethod 方法 (boolean)</a>