Entonces, deduciendo: una tupla podría ser una fila de una tabla de la bd, y esa fila podría ser recuperada y mantenida en memoria en un objeto, correcto? correcto.
Sigamos, una de las carencias que yo experimentaba al programar era el hecho de no poder fácilmente crear objetos que conserven múltiples propiedades sin previamente haber creado la clase personalizada.
Por ejemplo, si yo quería crear una colección con cada una de las propiedades de mi menú principal (url, imagen, target, color, etc…), tenía que crear una clase MenuItem, luego sus propiedades, y luego ya era sencillo crear una colección de elementos MenuItem usando una List(Of MenuItem).
Pero si luego quería armar otro menú con otras propiedades tenía que crear otra clase con otras propiedades… entonces te dabas cuenta que al final estabas creando un montón de clases que no tendrían mucho uso realmente.
Y la inquietud era que si hubiera una forma sencilla de crear algo como clases-al-vuelo, entonces sería más fácil. Y zasssssssssss…. apareció el concepto de Tuple en .NET Framework 4.0, que para mi es justo lo que necesitaba.
Obviamente, esta funcionalidad de Tuplas me facilita muchas más cosas que sólo el reemplazo de objetos personalizados. En codeproject encontré un artículo muy completo, denle una chequeada
http://www.codeproject.com/KB/cs/C_Sharp_4_Tuples.aspx
Les pongo un pequeño extracto de código VB.NET que soluciona el caso que les mencionaba acerca de crear el menú de opciones
Dim Menu As New List(Of Tuple(Of Integer, String, String, String, String, Boolean)) Menu.Add(Tuple.Create(1, "Home", "home.gif", "Default.aspx", "_self", True)) Menu.Add(Tuple.Create(1, "Dashboard", "dashboard.gif", "Dashboard.aspx", "_self", True)) Menu.Add(Tuple.Create(3, "Proyectos", "proyectos.gif", "Projects.aspx", "_self", True)) Menu.Add(Tuple.Create(4, "Reportes", "reportes.gif", "Reports.aspx", "_self", True)) Menu.Add(Tuple.Create(2, "Administración", "admin.gif", "Admin.aspx", "_blank", False)) 'luego itero por los elementos de la colección For Each MenuItem As Tuple(Of Integer, String, String, String, String, Boolean) In Menu 'observen que se ha autogenerado una propiedad .ItemX por cada elemento de la tupla response.Write(String.Format("{0}-{1}-{2}-{3}-{4}", MenuItem.Item1, MenuItem.Item2, MenuItem.Item3, MenuItem.Item4, MenuItem.Item5)) NextComo ven, no he tenido que crear una clase personalizada, ni luego instanciarla…etc. Simplemente usamos qué cosa? exacto Tuplas.
Finalmente decirles que con esta funcionalidad, Yo estoy saltando de un pie ;)
Espero que les sea de utilidad ;)
No hay comentarios.:
Publicar un comentario