Antes de ir a describir mi problema en primer lugar, me gustaría definir las definiciones de método decorador y Extensión decoradorel decorador del patrón y Métodos de extensión en C#
Acople responsabilidades adicionales a un objeto de forma dinámica. Decoradores proporcionan una alternativa flexible para subclases para extender la funcionalidad
método de extensión
Los métodos de extensión le permiten "add" métodos a los tipos existentes sin crear un nuevo tipo derivado, recompilar, o de otra manera modificar el tipo original
he siguiente fragmento de código en C#
public interface IMyInterface
{
void Print();
}
public static class Extension
{
public static void PrintInt(this IMyInterface myInterface, int i)
{
Console.WriteLine
("Extension.PrintInt(this IMyInterface myInterface, int i)");
}
public static void PrintString(this IMyInterface myInterface, string s)
{
Console.WriteLine
("Extension.PrintString(this IMyInterface myInterface, string s)");
}
}
public class Imp : IMyInterface
{
#region IMyInterface Members
public void Print()
{
Console.WriteLine("Imp");
}
#endregion
}
class Program
{
static void Main(string[] args)
{
Imp obj = new Imp();
obj.Print();
obj.PrintInt(10);
}
}
En el código anterior extiendo la interfaz sin modificar el código existente, y estos dos métodos están disponibles para la clase derivada. Entonces mi pregunta es esta: ¿El método de extensión es un reemplazo del patrón de decorador?
Tal Decorator habría sido encontrado para reemplazar los métodos de extensión estáticas sobre todo porque los métodos estáticos son difíciles de probar y aumentan acoplamiento. – Rockstart