unj*_*nj2 5 c# reflection readonly
fieldInfo类中的SetFields方法将对象作为第一个参数.有没有办法在C#中使用反射来更改静态只读字段的值?
到目前为止我有
var field = typeof(ClassName).GetField("FieldName",BindingFlags.Instance|BindingFlags.NonPublic);
Run Code Online (Sandbox Code Playgroud)
如果你想获得一个静态字段,那么你应该使用BindingFlags.Static而不是BindingFlags.Instance,因为后者是例如字段.
然后,您可以使用它field.SetValue(null, newValue)来设置值.请注意,null可以作为目标参数传递,因为不需要对象实例.假设您有足够的权限,反射将很乐意更改只读字段的值.
你很接近了。您的 BindingFlag 不正确。Instance表示实例字段 相反,您应该使用BindingFlags.Static:
var field = typeof(ClassName).GetField("FieldName",BindingFlags.Static|BindingFlags.NonPublic);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3246 次 |
| 最近记录: |