У меня есть класс, где FileHelpers зависит от полевого порядка в этом файле класса. Если файл класса когда-нибудь добирается, код моются выполненный против него, который заставит поля быть отсортированными в алфавитном порядке и невидимо разрушит мой класс.
Так как я хотел бы избежать этого от когда-нибудь случайного появления, есть ли resharper, комментирует директива для отключения очистки кода для класса?
Вы можете настроить XML-файл макета элемента по умолчанию и указать шаблон, который вы хотите игнорировать на этапе «переупорядочить элементы» при очистке кода.
Взгляните на раздел Тип элемента в настройках Resharper. Вы можете видеть, что уже есть два исключения, определенные для COM-интерфейсов и структур с StructLayoutAttribute
:
<!--Do not reorder COM interfaces-->
<Pattern>
<Match>
<And Weight="100">
<Kind Is="interface"/>
<HasAttribute
CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute"/>
</And>
</Match>
</Pattern>
<!--Do not reorder when StructLayoutAttribute is set -->
<Pattern>
<Match>
<And Weight="100">
<Or>
<Kind Is="struct"/>
<Kind Is="class"/>
</Or>
<HasAttribute
CLRName="System.Runtime.InteropServices.StructLayoutAttribute"/>
</And>
</Match>
</Pattern>
Вы можете легко создать свой собственный IgnoreTypeMemberReorderingAttribute
и добавить небольшой раздел в XML-файл. что проверить против него.
Я считаю, что Resharper соблюдает атрибут [StructLayout(LayoutKind.Sequential)].
Обновление: Я думаю, что на момент написания статьи это работало для классов, но в текущей версии Resharper (10), похоже, это применимо только к структурам, а не классам. Так что это, вероятно, все еще полезно во многих ситуациях взаимодействия, но не является общим способом удержания порядка любого класса.