Есть ли директива комментария resharper, чтобы отключить очистку кода для класса?

У меня есть класс, в котором FileHelpers зависит от порядка полей в этом файле класса. Если файл класса когда-либо получает очистку кода против него, что приведет к сортировке полей по алфавиту и невидимому разрушению моего класса.

Так как я хотел бы избежать этого из когда-либо случайно происходящего, есть ли директива комментария resharper отключить очистку кода для класса?

Ответы

Ответ 1

Вы можете настроить XML файл макета элемента по умолчанию и указать шаблон, который вы хотите игнорировать во время этапа "Изменить порядок членов" для очистки кода.

Посмотрите раздел "Макет типа" в настройках Resharper. Вы можете видеть, что для COM-интерфейсов и Structs уже есть два исключения, с 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, который проверяет его.

Ответ 2

Я считаю, что Resharper замечает атрибут [StructLayout (LayoutKind.Sequential)].

Обновление: я думаю, что это работало для классов на момент написания, но в текущих версиях Resharper (10), похоже, что это относится только к структурам, а не к классам. Поэтому он, вероятно, еще полезен во многих ситуациях взаимодействия, но не является общим способом удержания порядка любого класса.

Ответ 3

Другим полезным атрибутом, который применим к вашим полям, является [FieldOrder(1)], поэтому вы явно определяете порядок... Мне это нравится как раз в случае, чтобы защитить от полей, когда-либо переупорядоченных

Не знаю, какая версия FileHelpers появилась... Я использую v2.9.9.0, установленную с помощью NuGet