C # - FieldInfo и PropertyInfo неизменяемы или изменчивы? - PullRequest
2 голосов
/ 21 июня 2011

По сути, у меня есть следующее:

protected static readonly FieldInfo SpecialField = FindSpecialField();

FxCop жалуется мне на то, что я не должен делать поле доступным только для чтения, если оно изменчиво, потому что элементы могут быть изменены.FieldInfo и PropertyInfo являются неизменяемыми или изменяемыми.В принципе, я могу подавить это сообщение?

Ответы [ 3 ]

2 голосов
/ 21 июня 2011

Само FieldInfo выглядит неизменным, но его отклонения могут быть или не быть. Например, FieldBuilder можно изменить. То же самое относится и к PropertyInfo.

Итак, если вы знаете, что это всегда FieldInfo, полученное из рефлексии, то, скорее всего, вы будете в безопасности.

1 голос
/ 21 июня 2011

Хотя я никогда не видел тот, который, как я знал, является изменяемым, это базовые классы, и кто знает, какими могут быть производные классы.

1 голос
/ 21 июня 2011

Я бы сказал, что они неизменны. Нет членов, которые могли бы изменить состояние экземпляров FieldInfo и PropertyInfo. Метод SetValue() изменяет значение экземпляра (или статических членов класса), к которому принадлежит Поле / Свойство, но не само FieldInfo / PropertyInfo.

...