Существует ли директива резких комментариев, чтобы отключить очистку кода для класса? - PullRequest
14 голосов
/ 09 июля 2010

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

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

Ответы [ 3 ]

12 голосов
/ 09 июля 2010

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

Взгляните на раздел Type Member Layout в настройках 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-файл, который проверяет его.

10 голосов
/ 09 июля 2010

Я считаю, что Решарпер наблюдает за атрибутом [StructLayout (LayoutKind.Sequential)].

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

2 голосов
/ 01 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...