使用ReSharper按类型对名称进行排序

mar*_*nes 30 c# resharper

我一直试图让ReSharpers Code Cleanup不仅按名称按字母顺序排序任何成员,而且主要按其类型(无论是方法返回类型还是属性类型等)对它们进行排序,然后按名称排序.

例如:

#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
Run Code Online (Sandbox Code Playgroud)

会成为:

#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
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望其他默认行为保持不变,例如构造函数,属性定位/分组,以及多个成员出现在区域内(如上例所示),以便独立排序的成员组来自该组/地区以外的成员.

任何人都可以在ReSharper类型成员布局模式编辑器中推荐必要的代码来实现这一目标吗?

KP.*_*KP. 13

看看Resharper中的Type Member Layout,我猜这是不可能的.以下是事件区域的示例代码段:

<Entry>
    <Match>
        <Kind Is="event"/>
    </Match>
    <Sort>
        <Access Order="public internal protected-internal protected private" />
        <Static />
        <Name/>
    </Sort>
    <Group Region="Events"/>
</Entry>
Run Code Online (Sandbox Code Playgroud)

以下是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/>
Run Code Online (Sandbox Code Playgroud)

您可以联系JetBrains并请求将新操作数添加到列表中.看起来相当简单.可能是这样的:

<ReturnType="$val" [Order="$val"][AlphaOrder="true/false"]>
Run Code Online (Sandbox Code Playgroud)