2

基本上,我有以下内容:

protected static readonly FieldInfo SpecialField = FindSpecialField();

FxCop 向我抱怨说,如果字段是可变的,我不应该将其设为只读,因为成员可以更改。FieldInfo 和 PropertyInfo 是不可变的还是可变的。基本上,我可以压制这条消息吗?

4

3 回答 3

2

FieldInfo 本身看起来是不可变的,但它的偏差可能是也可能不是。例如,可以修改FieldBuilder 。PropertyInfo 也是如此。

因此,如果您知道它始终是从反射获得的 FieldInfo,那么您很可能是安全的。

于 2011-06-21T19:19:30.813 回答
1

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

于 2011-06-21T19:20:35.993 回答
1

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

于 2011-06-21T19:20:44.897 回答