Существует ли директива резких комментариев, чтобы отключить очистку кода для класса?

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

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

3 ответа

Решение

Вы можете настроить 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), кажется, это относится только к структурам, а не к классам. Так что это, вероятно, все еще полезно во многих ситуациях взаимодействия, но не является общим способом удержания порядка любого класса.

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

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

Другие вопросы по тегам