The SetFields method in the fieldInfo class takes objects as the first parameter. Is there a way to change the value of the static readonly fields using reflection in C#?
So far I have
var field = typeof(ClassName).GetField("FieldName",BindingFlags.Instance|BindingFlags.NonPublic);
If you want to get a static field then you should be using
BindingFlags.Static
instead ofBindingFlags.Instance
, as the latter is for instance fields.You can then use
field.SetValue(null, newValue)
to set the value. Note thatnull
may be passed as the target parameter, because no object instance is needed. Assuming you have sufficient privileges, reflection will happily change the value of a readonly field.You're close. Your BindingFlag is incorrect.
Instance
means instance field Instead, you should useBindingFlags.Static
: