2012-02-01 9 views
30

He intentado que ReSharpers Code Cleanup no solo clasifique los miembros alfabéticamente por nombre, sino que los ordene principalmente por su tipo (ya sea un tipo de retorno de métodos o un tipo de propiedades, etc.), luego por su nombre.Uso de ReSharper para ordenar miembros por tipo y luego Nombre

Por ejemplo:

#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 

se convertiría en:

#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, me gustaría que los otros comportamientos predeterminados a seguir siendo la misma, por ejemplo, donde se posicionan/agrupan Constructores, Propiedades, y si aparece un número de miembros dentro de una región (como en el ejemplo anterior), para que ese grupo de miembros se ordene independientemente de los miembros fuera de ese grupo/región.

¿Alguien puede recomendar el código necesario dentro del editor de patrones de diseño ReSharper Type Members para lograr esto, por favor?

+0

¿Quiere decir simplemente el tipo de devolución para los métodos? – svick

+0

En realidad, actualizaré el título de la pregunta, ya que no es solo Métodos. Me gustaría que los tipos de devolución para Métodos y tipos de propiedad se clasifiquen primero. Todavía quiero conservar el orden predeterminado de dónde aparecen constructores, propiedades, métodos, etc. dentro de una clase, pero dentro de cada una de estas agrupaciones, en lugar de simplemente clasificar por nombre de miembro, ordenar por tipo primero, luego nombre. – marcusstarnes

+0

No estoy del todo seguro, pero es posible que pueda escribir un [complemento] (http://confluence.jetbrains.net/display/ReSharper/ReSharper+Plugin+Development) para hacer esto. – svick

Respuesta

13

Mirando el diseño de miembros de tipo en Resharper, supongo que esto no es posible. He aquí un fragmento de ejemplo para la región de eventos:

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

He aquí un artículo de JetBrains mismos: In-depth look at customizing type layout with resharper.

Parece que no hay ningún calificador para el tipo de devolución para la clasificación desafortunadamente. Estas son las opciones, se hace referencia en ese puesto:

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

puede ponerse en contacto JetBrains y solicitar que un nuevo operando ser añadido a la lista. Parece bastante simple. Podría ser algo así como:

<ReturnType="$val" [Order="$val"][AlphaOrder="true/false"]> 
Cuestiones relacionadas