2012-02-01 44 views
30

我一直試圖讓ReSharpers代碼清理,不僅按字母順序排序按名稱的任何成員,但他們主要是由它們的類型(排序,不管是一個方法返回類型或屬性類型等),然後按他們的名字。使用ReSharper的至按類型成員則命名

例如:

#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

你的意思只是方法的返回類型? – svick 2012-02-01 12:58:43

+0

其實,我會更新問題的標題,因爲它不只是方法。我希望首先對方法和屬性類型的返回類型進行排序。我仍然希望保留構造函數,屬性,方法等在類中出現但在這些分組中的默認順序,而不是僅按成員名稱排序,先按類型排序,然後再按名稱排序。 – marcusstarnes 2012-02-01 13:02:53

+0

我不能完全確定,但很有可能,你可以寫一個[插件](http://confluence.jetbrains.net/display/ReSharper/ReSharper+Plugin+Development)這樣做。 – svick 2012-02-01 16:23:33

回答

13

望着類型成員佈局ReSharper的,我猜這是不可能的。下面是該事件區域的樣本片段:

<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"]> 
相關問題