lunes, 1 de febrero de 2016

Extender una clase con c# 3.0

A veces es necesario agregar nueva funcionalidad a una clase y no deseamos modificar el código de esa clase; ya sea porque no tenemos acceso al código fuente o porque no deseamos tocar algo que ya funciona.
Con c# 3.0 estas clases se pueden extender; para hacerlo es necesario hacer lo siguiente:

-Agregar una clase estática con un método estático. El primer parámetro de la "nueva clase" se agrega automáticamente, pero es necesario marcarlo con la palabra this. cuando esta clase es creada dicho objeto es pasado automáticamente al método.
De esta manera el método agregado en la clase extensora aparece en el intellisense del objeto original.


Ejemplo:
Si tenemos una clase Customer y deseamos agregarle un método para renombrar el nombre del cliente la clase quedaría de la siguiente manera:

public static class CustomerExtender
{
 public static void ChangeName(this Customer cust, String newName)
 {
  cust.Name = newName;
 }
}


Donde el parámetro cust es el objeto Customer original. De esta manera podemos usar el siguiente código:

 Customer customer = new Customer("Smart");
 customer.ChangeName("Walmart");

 customer.Save();

¡Como si el método ChangeName existiera en la clase original!.

No hay comentarios.:

Publicar un comentario

Nota: sólo los miembros de este blog pueden publicar comentarios.

Mover mensajes seleccionados a un personal folder en Oulook 2016

Este es un ejemplo de como mover los mensajes seleccionados a un personal folder (pst) en Outlook 2016 usando VBA. Sub MoveInbox()     Mov...