Esto significa que a cualquier clase se le puede añadir nuevos métodos o funcionalidades en tiempo de ejecución.
Los lenguajes fuertemente tipados no suelen ofrecer tanta libertad, pero se disponen de otras herramientas.
En C#, se pueden definir clases parciales, lo que significa que se puede definir el comportamiento de la clase en varias etapas.
public partial class PartialClass
{
public static void method1()
{
Console.WriteLine("method1");
}
}
...
public partial class PartialClass
{
public static void method2()
{
Console.WriteLine("method2");
}
}
Manteniendo las clases como parciales en cualquier momento se puede añadir funcionalidad a una clase existente fuera de su definición original.
Este método es útil tan solo para las clases que programamos, pero si queremos extender una librería externa o las clases del propio lenguaje las clases parciales no son de gran ayuda.
C# tiene en cambio una posibilidad más interesante, los "extension methods".
public static class ExtensionMethods
{
public static string withDot(this string str)
{
return str + ".";
}
}
...
string str = "text ";
str.withDot();
Con el código anterior se le añade a la clase string el nuevo método (withDot).
Para hacer lo mismo sin "extension methods" habría sido necesario crear una nueva clase que heredara de string y añadirle el método withDot.
Gracias a los "extension methods" se puede evitar crear clases intermedias para extender funcionalidades de las ya existentes.
0 comentarios:
Publicar un comentario