De .Net Framework 4 al 2 y de vuelta (I)

Hace unos días que he tenido la mala suerte de tener que hacer algunas líneas de código bajo un viejo conocido.

Por cuestiones de negocio me vi en la necesidad de crear código con soporte exclusivo para Microsoft .Net Framework 2.0, retrocediendo dos lugares en base a la última versión de este.

Siendo que estamos, actualmente, con la versión 4 y ya se vislumbran los cambios que traerá la nueva versión, así como cambios en los lenguajes, volver a la versión 2 hace que uno pueda darse cuenta cuanto necesita de la última versión.

Uno de los principales problemas es el de tener que hacer mucho más código del que estamos acostumbrados con la versión 4, además mucho código o atajos que simplemente es inexistente. Por lo tanto, para poder seguir programando de la forma en cómo me había acostumbrado, he tenido que crear estos atajos por mi cuenta.

Debido a que tampoco es ciencia extraña, les dejo algunas de estas líneas por si les resulta útil.

Func<T>

public delegate bool Func<T>(T param);

Esta es la firma del delegado Func. Por supuesto, esta es una adaptación que he hecho para un caso específico aunque en .Net 4.0 podemos encontrar el mismo con un número mayor de parámetros, incluido el último que representa el tipo devuelto por la función. En todo caso, expandirlo puede resultar bastante fácil. De cualquier manera, el motivo para este delegado es el poder realizar la siguiente función.

internal List<T> Where<T>(Func<T> func)
where T : class, new()
{
List<T> resultList = new List<T>();

this.ForEach((item) =>
{
if (item.GetType().Equals(typeof(T)))
{
if (func(item as T))
resultList.Add(item as T);
}
});

return resultList;
}

Cómo podemos ver, el objetivo es tener una función Where donde, en base a la función Func podamos realizar algún tipo de filtro y así decidir si el elemento actual es agregado a la lista de T para luego ser retornado.

Sí, esto está solucionado en la última versión del Framework, pero como decía antes, si no lo tenemos, no nos queda alternativa que crearlo.



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