Подтвердить что ты не робот

Как изменить порядок членов типа с помощью Resharper?

Типичный сценарий: класс, над которым многие люди работали. Я хотел бы сортировать методы, свойства и т.д. В алфавитном порядке.

Я хотел бы иметь возможность делать это в регионе или глобально в классе.

Я вижу, что функция в Resharper делает это, но, похоже, ничего не делает.

4b9b3361

Ответ 1

Используйте функцию "Очистить код".

Порядок членов может быть настроен в параметрах ReSharper в языках, С#, макете членов-членов. Это хорошо документированная спецификация макета XML, которую ReSharper использует при переупорядочивании членов.

Ответ 2

Сортировка по умолчанию не активируется. Вы можете активировать его, открыв параметры переадресации, а затем перейдите сюда:

введите описание изображения здесь

Ответ 3

В интересах людей, таких как я, которые приземлились на этот вопрос через веб-поиск, но обнаружили, что деталь вопроса не совсем то, что они ожидали, вам может понравиться, что вы можете перемещать отдельных членов вверх и вниз в файле, удерживая Ctrl-Alt-Shift, а затем нажимая стрелки вверх или вниз.

(Очевидно, что не автоматическое оформление в алфавитном порядке, заданное в теле вопроса, но это был ответ, который я надеялся найти в вопросе в названии.)

Ответ 4

Альтернативой рассмотрению является Regionerate. Мы используем и как ReSharper, но Regionerate соответствует нашим потребностям в создании регионов и сортировке/перегруппировке элементов. И все это настраивается, конечно.

UPDATE: мы вместо этого использовали ReSharper Code Cleanup.

Ответ 5

Две вещи: существует известное (но не задокументированное) условие, в котором условия предварительной компиляции (например, #if DEBUG) останавливают переупорядочение членов типа. http://youtrack.jetbrains.com/issue/RSRP-336643#tab=Comments Другими словами, если у вас есть #IF DEBUG, он не будет переупорядочиваться.

Недавно я также заметил, что в ReSharper 8.0.1 (и, возможно, более ранних версиях), что кнопка для возврата шаблона XML обратно к DEFAULT WITH REGIONS на самом деле не содержит каких-либо утверждений для включения группировки #REGION. Поэтому я взял шаблон StyleCop, который включает сортировку и добавление # REGION-ing для каждого члена типа. Если вы выберете CUSTOM TEMPLATE, тогда вставьте этот XML файл, он должен работать.

<Patterns xmlns="urn:shemas-jetbrains-com:member-reordering-patterns">

<!--  Do not reorder COM interfaces  -->
<Pattern>
    <Match>
        <And Weight="100">
            <Kind Is="interface" />
            <HasAttribute CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute" />
        </And>
    </Match>
</Pattern>

<!--  Special formatting of NUnit test fixture  -->
<Pattern RemoveAllRegions="true">
    <Match>
        <And Weight="100">
            <Kind Is="class" />
            <HasAttribute CLRName="NUnit.Framework.TestFixtureAttribute" Inherit="true" />
        </And>
    </Match>

    <!--  Setup/Teardow  -->
    <Entry>
        <Match>
            <And>
                <Kind Is="method" />
                <Or>
                    <HasAttribute CLRName="NUnit.Framework.SetUpAttribute" Inherit="true" />
                    <HasAttribute CLRName="NUnit.Framework.TearDownAttribute" Inherit="true" />
                    <HasAttribute CLRName="NUnit.Framework.FixtureSetUpAttribute" Inherit="true" />
                    <HasAttribute CLRName="NUnit.Framework.FixtureTearDownAttribute" Inherit="true" />
                </Or>
            </And>
        </Match>
    </Entry>
    <!--  All other members  -->
    <Entry />
    <!--  Test methods  -->
    <Entry>
        <Match>
            <And Weight="100">
                <Kind Is="method" />
                <HasAttribute CLRName="NUnit.Framework.TestAttribute" Inherit="false" />
            </And>
        </Match>
        <Sort>
            <Name />
        </Sort>
    </Entry>
</Pattern>

<!--  Default pattern  -->


<Pattern RemoveAllRegions="false">
    <!--  Delegates  -->
    <Entry>
        <Match>
            <And Weight="100">
                <Access Is="public" />
                <Kind Is="delegate" />
            </And>
        </Match>
        <Sort>
            <Access Order="public internal protected-internal protected private" />
            <Name />
        </Sort>
        <Group Region="Delegates" />
    </Entry>


    <!--  Fields and constants  -->
    <Entry>
        <Match>
            <Or>
                <Kind Is="field" />
                <Kind Is="constant" />
            </Or>
        </Match>

        <Sort>
            <Access Order="public internal protected-internal protected private" />
            <Kind Order="constant" />
            <Readonly />
            <Static />
            <Name />
        </Sort>
        <Group Region="Fields" />
    </Entry>

    <!--  Enums  -->
    <Entry>
        <Match>
            <Kind Is="enum" />
        </Match>
        <Sort>
            <Access Order="public internal protected-internal protected private" />
            <Name />
        </Sort>
        <Group Region="Enums" />
    </Entry>

    <!--  Constructors. Place static one first  -->
    <Entry>
        <Match>
            <Kind Is="constructor" />
        </Match>
        <Sort>
            <Static />
            <Access Order="public internal protected-internal protected private" />
        </Sort>
        <Group Region="Constructors" />
    </Entry>

    <!--  Destructors. Place static one first  -->
    <Entry>
        <Match>
            <Kind Is="destructor" />
        </Match>
        <Sort>
            <Static />
            <Access Order="public internal protected-internal protected private" />
        </Sort>
        <Group Region="Destructors" />
    </Entry>


    <!--  Events  -->
    <Entry>
        <Match>
            <Kind Is="event" />
        </Match>

        <Sort>
            <Access Order="public internal protected-internal protected private" />
            <Name />
        </Sort>
        <Group Region="Events" />
    </Entry>

    <!--  Properties  -->
    <Entry>
        <Match>
            <And>
                <Kind Is="property" />
                <Not>
                    <Kind Is="indexer" />
                </Not>
            </And>
        </Match>
        <Sort>
            <Access Order="public internal protected-internal protected private" />
            <Static />
            <Abstract />
            <Virtual />
            <Override />
            <Name />
        </Sort>
        <Group Region="Properties" />
    </Entry>

    <!--  Indexers  -->
    <Entry>
        <Match>
            <Kind Is="indexer" />
        </Match>
        <Sort>
            <Access Order="public internal protected-internal protected private" />
            <Static />
            <Abstract />
            <Virtual />
            <Override />
            <Name />
        </Sort>
        <Group Region="Indexers" />
    </Entry>

    <!--  Methods  -->
    <Entry>
        <Match>
            <And>
                <Or>
                    <Kind Is="method" />
                    <Kind Is="operator" />
                    <HandlesEvent />
                </Or>
                <Not>
                    <Kind Is="destructor" />
                </Not>
            </And>
        </Match>
        <Sort>
            <Access Order="public internal protected-internal protected private" />
            <Static />
            <Abstract />
            <Virtual />
            <Override />
            <Name />
        </Sort>
        <Group Region="Methods" />
    </Entry>

    <!--  all other members  -->
    <Entry />

    <!--  nested types  -->
    <Entry>
        <Match>
            <Kind Is="type" />
        </Match>
        <Sort>
            <Access Order="public internal protected-internal protected private" />
            <Static />
            <Abstract />
            <Virtual />
            <Override />
            <Name />
        </Sort>
        <Group Region="Nested Types" />
    </Entry>
</Pattern>

Ответ 6

В меню Visual Studio

ReSharper > Параметры > Средa > IntelliSense > Поведение завершения > Сортировка элементов (по алфавиту)

Ответ 7

Если вы переупорядочиваете параметры по определенным методам, вы можете использовать Refactor > Change Signature, если ваш курсор находится на имени метода. Я использую ярлыки IntelliJ, поэтому для меня команда Ctrl + Shift + R, а затем Ctrl + F6.

Контекстное меню рефакторинга

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