我一直试图让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
会变成:
#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类型成员布局模式编辑器中推荐必要的代码来实现这一目标吗?
答案 0 :(得分: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>
以下是JetBrains自己的一篇文章:In-depth look at customizing type layout with 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"]>