我正在尝试编写一些代码来设置结构的属性(重要的是它是结构的属性),但失败了:
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(); PropertyInfo propertyInfo = typeof(System.Drawing.Rectangle).GetProperty("Height"); propertyInfo.SetValue(rectangle, 5, null);
高度值(由调试器报告)永远不会设置为任何值-它保持默认值0。
之前我在课堂上做了很多思考,并且效果很好。另外,我知道在处理结构时,如果设置字段,则需要使用FieldInfo.SetValueDirect,但是我不知道PropertyInfo的等效项。
的值rectangle被装箱-但是您将丢失被修改的装箱值。尝试这个:
rectangle
Rectangle rectangle = new Rectangle(); PropertyInfo propertyInfo = typeof(Rectangle).GetProperty("Height"); object boxed = rectangle; propertyInfo.SetValue(boxed, 5, null); rectangle = (Rectangle) boxed;