Skip to content

Métodos de extensión (Extension Methods)

by en 29 marzo, 2012
Extension Method

Llamada a un método de extensión

Un Extension Method es un método que extiende los métodos nativos de un objeto de cierto tipo sin la necesidad de crear un tipo heredado, recompilar o modificar el tipo original.

Un Extension Method es un tipo especial de método que extiende el tipo. Para un cliente C# o VB no existe diferencia aparente entre llamar un método de extensión a un método nativo del tipo.

Un ejemplo claro de extensión de métodos es la librería LINQ, los operadores .Where(), .Select() de un objeto IEnumerable no existen si no se importa la librería LINQ.

El siguiente ejemplo es sacado directamente de la página de Microsoft (link al final del artículo) e ilustra cómo utilizar un Método de extensión.

Un método de extensión está definido como un método estático pero es llamado utilizando sintaxis de instancia. Su primer parámetro especifica el tipo en el que opera el método, y el parámetro es precedido por el modificador this. Un método de extensión solo esta disponible si se importa explicitamente el namespace en el código fuente.

namespace ExtensionMethods
{
 public static class MyExtensions
 {
 public static int WordCount(this String str)
 {
 return str.Split(new char[] { ' ', '.', '?' },
 StringSplitOptions.RemoveEmptyEntries).Length;
 }
 }
}

using ExtensionMethods;
string s = "Hello Extension Methods";
int i = s.WordCount();

En el código se invoca el método de extensión con sintaxis de instancia. Sin embargo, el Intermadiate Language (IL) generado por el compilador traduce el código a una llamada al método estático. De esta manera el principio de encapsulación no es realmente violado, de hecho, los métodos de extensión no pueden acceder a variables privadas en el tipo que están extendiendo.

Más información y fuente:

http://msdn.microsoft.com/en-us/library/bb383977.aspx

Enjoy!😀

One Comment
  1. Reblogged this on Nathan and commented:
    Interesante

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: