C# - FieldInfo和PropertyInfo是不可变的还是可变的?

时间:2011-06-21 19:14:51

标签: c# immutability fxcop propertyinfo fieldinfo

基本上,我有以下内容:

protected static readonly FieldInfo SpecialField = FindSpecialField();

FxCop向我抱怨虽然如果它是可变的,我不应该只读一个字段,因为成员可以被更改。 FieldInfo和PropertyInfo是不可变的还是可变的。基本上,我可以抑制此消息吗?

3 个答案:

答案 0 :(得分:2)

FieldInfo本身看起来是不可变的,但它的衍生可能会也可能不会。例如,可以修改FieldBuilder。同样适用于PropertyInfo。

所以,如果你知道它总是从反射中获得的FieldInfo,那么你很可能会安全。

答案 1 :(得分:1)

我会说他们是永恒的。没有成员可以更改FieldInfoPropertyInfo的实例状态。 SetValue()方法更改Field / Property所属的实例(或类的静态成员)的值,但不更改FieldInfo / PropertyInfo本身的值。

答案 2 :(得分:1)

虽然我从未见过一个我知道可变的东西,但它们是基类,谁知道派生类可能是什么样的。