Решарпер: как заставить вводить новые закрытые поля внизу класса? - PullRequest
3 голосов
/ 13 мая 2009

Resharper предлагает очень полезное введение и инициализацию поля xxx действие при указании нового параметра в конструкторе, например:

Constructor (int parameter)

Единственное (незначительное) неудобство заключается в том, что оно ставит новое поле в начале класса - и я фанат размещения частных частей как можно дальше от посторонних глаз незнакомцев;).

Если, однако, у вас уже есть некоторые частные поля в классе, Resharper поместит новое поле «правильно» (обратите внимание на кавычки, я не хочу начинать пламенную войну из-за этой проблемы) рядом с ними, даже если они в конце класса.

Есть ли способ заставить Resharper всегда ставить новые поля в конце класса?

ОБНОВЛЕНИЕ: ОК, я забыл упомянуть, что знаю о функции «Тип элементов в параметрах», но было бы неплохо получить конкретную помощь по изменению шаблона для размещения полей.

Ответы [ 3 ]

4 голосов
/ 13 мая 2009

В «Макете членов типа» вы можете найти и переместить следующий блок XML

<!--fields and constants-->
<Entry>
  <Match>
    <Or>
      <Kind Is="constant"/>
      <Kind Is="field"/>
    </Or>
  </Match>
  <Sort>
    <Kind Order="constant field"/>
    <Static/>
    <Readonly/>
    <Name/>
  </Sort>
</Entry>

В нижней части шаблона по умолчанию. В основном две строки вверху внизу файла

    <!--HERE-->

  </Pattern>      
</Patterns>

К сожалению, быстрый тест показывает, что это не влияет на новые поля, созданные с помощью опции, которую вы описали, но заставит очистку кода переместить их в нужное место. (При условии, что у вас включен «Члены типа повторного заказа»)


Если вы привыкли использовать открытые поля и хотите, чтобы закрытые поля были перемещены в нижнюю часть, измените приведенное выше совпадение на следующее:

<Match>
  <And>
    <Access Is="private"/>
    <Or>
      <Kind Is="constant"/>
      <Kind Is="field"/>
    </Or>
  </And>
</Match>

Затем вы можете снова скопировать весь блок, изменить значение «Access Is» на «public» и поместить новый публичный блок туда, куда вы хотите, чтобы общедоступные поля были - ближе к вершине, откуда он изначально пришел думаю.

0 голосов
/ 17 августа 2009

Если вы этого еще не сделали, вы должны подать отчет об ошибке на сайте ReSharper Jira:

http://www.jetbrains.net/jira/browse/RSRP

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

0 голосов
/ 13 мая 2009

Используйте пользовательский «Тип элементов Layout» в опциях Resharper.

В разделе «Шаблон по умолчанию» определения макета XML просто переместите элемент ввода, который группирует ваши поля, в конец раздела, после методов, событий, свойств и т. Д.

...