2012-02-01 15 views
30

Ho cercato di ottenere ReSharpers Code Cleanup per non solo ordinare alfabeticamente i membri per nome, ma per ordinarli principalmente in base al loro tipo (che sia un metodo restituito o un tipo di proprietà ecc.), quindi con il loro nome.Utilizzo di ReSharper per ordinare i membri per tipo, quindi Nome

Ad esempio:

#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 

diventerebbero:

#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 

Idealmente, vorrei gli altri comportamenti predefiniti per rimanere lo stesso per esempio dove Costruttori, Proprietà sono posizionati/raggruppati e se un numero di membri appare all'interno di una regione (come nell'esempio sopra), per quel gruppo di membri deve essere ordinato indipendentemente dai membri al di fuori di quel gruppo/regione.

Qualcuno può raccomandare il codice necessario all'interno dell'Editor di modelli Layout membri di tipo ReSharper per ottenere questo risultato?

+0

Intendi solo il tipo di ritorno per i metodi? – svick

+0

In realtà, aggiornerò il titolo della domanda in quanto non si tratta solo di metodi. Vorrei prima ordinare i tipi di ritorno per metodi e tipi di proprietà. Continuo a mantenere l'ordinamento predefinito di dove costruttori, proprietà, metodi, ecc. Compaiono all'interno di una classe ma all'interno di ciascuno di questi gruppi, invece di ordinare semplicemente per nome di membro, prima ordinare per tipo, poi nome. – marcusstarnes

+0

Non ne sono completamente sicuro, ma è possibile che tu possa scrivere un [plugin] (http://confluence.jetbrains.net/display/ReSharper/ReSharper+Plugin+Development) per farlo. – svick

risposta

13

Guardando il layout del membro di tipo in Resharper, suppongo che questo non sia possibile. Ecco un frammento di esempio per la regione eventi:

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

Ecco un articolo da JetBrains stessi: In-depth look at customizing type layout with resharper.

Sembra che non ci sia un qualificatore per il tipo di reso per l'ordinamento sfortunatamente. Qui ci sono le opzioni, si fa riferimento in questo post:

- <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/> 

è possibile contattare JetBrains e richiedere che un nuovo operando essere aggiunto alla lista. Sembra abbastanza semplice. Potrebbe essere qualcosa di simile:

<ReturnType="$val" [Order="$val"][AlphaOrder="true/false"]> 
Problemi correlati