基本上,我有以下内容:
protected static readonly FieldInfo SpecialField = FindSpecialField();
FxCop 向我抱怨说,如果字段是可变的,我不应该将其设为只读,因为成员可以更改。FieldInfo 和 PropertyInfo 是不可变的还是可变的。基本上,我可以压制这条消息吗?
基本上,我有以下内容:
protected static readonly FieldInfo SpecialField = FindSpecialField();
FxCop 向我抱怨说,如果字段是可变的,我不应该将其设为只读,因为成员可以更改。FieldInfo 和 PropertyInfo 是不可变的还是可变的。基本上,我可以压制这条消息吗?
FieldInfo 本身看起来是不可变的,但它的偏差可能是也可能不是。例如,可以修改FieldBuilder 。PropertyInfo 也是如此。
因此,如果您知道它始终是从反射获得的 FieldInfo,那么您很可能是安全的。
我会说它们是不可变的。没有成员可以更改 和 的实例的FieldInfo
状态PropertyInfo
。该SetValue()
方法会更改 Field/Property 所属的实例(或类的静态成员)的值,但不会更改 FieldInfo/PropertyInfo 本身。
虽然我从未见过一个我知道是可变的,但它们是基类,谁知道派生类会是什么样子。