結論:可以
驗證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>