2010-03-03 10 views

Respuesta

11

Esto es útil para mejorar la sintaxis de código dentro de un método/clase, pero no quiere exponer la funcionalidad ofrecida por ese método de extensión de otras áreas de la base de código. En otras palabras, como una alternativa para los métodos auxiliares estáticos privados regulares

+0

No entendí qué dijiste la primera vez que lo leí, sobre todo porque tiendo a evitar las clases de ayuda grande donde una clase privada de ayuda estática tendría sentido, después de pensar un poco creo que tu respuesta es correcta. +1 –

8

considerar lo siguiente:

public class MyClass 
{ 
    public void PerformAction(int i) { } 
} 

public static class MyExtensions 
{ 
    public static void DoItWith10(this MyClass myClass) 
    { 
     myClass.DoIt(10); 
    } 

    public static void DoItWith20(this MyClass myClass) 
    { 
     myClass.DoIt(20); 
    } 

    private static void DoIt(this MyClass myClass, int i) 
    { 
     myClass.PerformAction(i); 
    } 
} 

que se dan cuenta que el ejemplo no tiene mucho sentido en su forma actual, pero estoy seguro de que se puede apreciar las posibilidades que ofrecen los métodos de extensión privados, es decir, la capacidad de tener métodos de extensión pública que usan la extensión privada para encapsulación o composición.

+0

hm, supongo que no deseamos cambiar MyClass; de lo contrario, podría tener la función DoIt como una función normal en MyClass. Pero, de nuevo, ¿por qué el DoIt funciona en absoluto si DoItWith20 puede llamar a PerformAction en sí? –

+0

@ThanosPapathanasiou MyClass podría ser un código al que no tiene acceso. p.ej. una asamblea de un tercero – Dolbz

+0

@ThanosPapathanasiou: Sé que el ejemplo es perfecto desde el punto de vista de la lógica, pero fue lo que pude llegar con prisa. Sin embargo, ilustra que los métodos privados de extensión no son inútiles. –

Cuestiones relacionadas