Использование ReSharper для сортировки членов по типу, а затем по имени - PullRequest
30 голосов
/ 01 февраля 2012

Я пытался заставить ReSharpers Code Cleanup не только сортировать любые элементы в алфавитном порядке по имени, но и сортировать их в основном по их типу (будь то методы, возвращающие тип или тип свойств и т. Д.), А затем по ихname.

Например:

#region " Properties "

public string Name { get; set; }
public int Age { get; set; }

#endregion

#region " Instance Methods "

public void SecondMethod()...
public void FirstMethod()...
public Post GetPost()...
public List<Post> GetPosts()...

#endregion

станет:

#region " Properties "

public int Age { get; set; }
public string Name { get; set; }

#endregion

#region " Instance Methods "

public List<Post> GetPosts()...
public Post GetPost()...
public void FirstMethod()...
public void SecondMethod()...

#endregion

В идеале, я бы хотел, чтобы другие поведения по умолчанию оставались такими же, например, где Конструкторы, Свойствапозиционируются / группируются, и если в пределах региона появляется несколько участников (как в примере выше), то эта группа членов может быть отсортирована независимо от членов вне этой группы / региона.

Может кто-нибудь порекомендоватькод, необходимый в редакторе шаблона ReSharper Type Members Layout для достижения этой цели, пожалуйста?

1 Ответ

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

Глядя на макет члена типа в Resharper, я предполагаю, что это невозможно.Вот пример фрагмента для области событий:

<Entry>
    <Match>
        <Kind Is="event"/>
    </Match>
    <Sort>
        <Access Order="public internal protected-internal protected private" />
        <Static />
        <Name/>
    </Sort>
    <Group Region="Events"/>
</Entry>

Вот статья от самих JetBrains: Углубленный взгляд на настройку макета типа с помощью resharper .

Это выглядиткак, к сожалению, нет классификатора для типа возвращаемого значения для сортировки.Вот параметры, упомянутые в этом посте:

 - <Kind Is=”$val” [Order=”$val”]>
 - <Name Is="$val” [IgnoreCase=”true/false”]>
 - <HasAttribute CLRName=”$val” [Inherit=”true/false”]>
 - <Access Is=”$val”>
 - <Static/>
 - <Abstract/>
 - <Virtual/>
 - <Sealed/>
 - <Readonly/>
 - <ImplementsInterface CLRName=”$val” [Immediate=”true/false”]>
 - <HandlesEvent/>

Вы можете связаться с JetBrains и запросить добавление нового операнда в список.Кажется довольно простым.Может быть что-то вроде:

<ReturnType="$val" [Order="$val"][AlphaOrder="true/false"]>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...