2011-03-02 24 views
5

Tengo una clase estática con varios métodos de extensión para varios tipos. ¿Hay alguna utilidad o la forma de dividirla en varias clases? Clase separada para cada tipo de objetivo.¿Cómo agrupar los métodos de extensión?

+0

Hola, yo definiría una clase diferente, llamada como tipoextensiones para cada tipo que extienda, mantendría todas estas clases en el mismo archivo y espacio de nombres si no son demasiadas. –

Respuesta

5

Poner sus diversos métodos de extensión en diferentes clases es una buena idea desde una perspectiva de "código limpio", pero la "agrupación" principal de los métodos de extensión ocurre colocándolos en diferentes espacios de nombres. La razón es que los métodos de extensión están disponibles al "usar" el espacio de nombre apropiado.

Poner diferentes grupos de métodos de extensión en diferentes espacios de nombres es una buena idea ya que podría tener métodos de extensión colisionantes. Si eso sucede, y cada grupo lógico de métodos de extensión está en un espacio de nombres detallado, debería poder resolver el conflicto simplemente eliminando una de las declaraciones using, dejando así la declaración using que contiene el método de extensión que realmente desea.

Aquí hay un enlace a algunas de las mejores prácticas:

http://blogs.msdn.com/b/vbteam/archive/2007/03/10/extension-methods-best-practices-extension-methods-part-6.aspx

+0

Gracias por la respuesta. – Peter17

+0

+1 buen enlace, gracias! –

0

tengo otra forma de agrupación:

public class StringComplexManager 
{ 
    public StringComplexManager(String value) 
    { 
     Value = value; 
    } 

    public String Value { get; set; } 
} 

public static class StringComplexExtensions 
{ 
    public static StringComplexManager ComplexOperations(this String value) 
    { 
     return new StringComplexManager(value); 
    } 

    public static int GetDoubleLength(this StringComplexManager stringComplexManager) 
    { 
     return stringComplexManager.Value.Length * 2; 
    } 
} 

uso es:

string a = "Hello" 
a.ComplexOperations().GetDoubleLength() 

ComplexOperation() grupos los métodos de extensión y estrecha el intellisense alcance, de modo que si originalmente tenía cientos de métodos de extensión de cadena, ahora solo verá uno en intellisense.

Cuestiones relacionadas