Buenos Días tecnólogos hoy les traigo como usar los Diccionarios que son una herramienta muy útil para crear Código dinámico en tus aplicaciones, mucho de nosotros desarrolladores estamos acostumbrados a crear Entidades con sus propiedades para luego a estas entidades utilizarlas para Insertar, Mostrar Valores, Obtener Listas de dicho Objeto a partir de una consulta SQL y creamos tantas entidades como tablas tengamos para crear nuestro sistema lo que no permite que nuestro sistema sea Dinámico, no podemos reutilizar consultas ni adicionar campos por que implicaría una entidad nueva o una modificación fuerte de código.
Estas practicas ya muchos desarrolladores las han mejorado con herramientas de distintas formas y una de ellas muy útil es crear Diccionarios donde nuestras entidades estáticas pasan a ser Dinámicas ya todo depende de lo que incluye el diccionario de datos pero como podemos aplicar esta lógica?
Concepto por MSDN
Representa una colección de claves y valores.
Namespace: System.Collections.Generic
Primero que nada vamos a declarar una Variable de tipo Diccionario:
Se debe declarar de esta manera:
Dictionary<TKey, TValue> Nombre
Donde:
TKEY: Es el tipo de dato que utilizaras para el KEY puede ser un Entero, Una Cadena String que es lo mas Habitual pero en si esto puede ser lo que quieras.
TVALUE: es el tipo de datos del valor que va a estar ligado al Key Anterior puede ser de cualquier tipo normalmente es un Object así permitirá almacenar en este cualquier tipo de Objeto.
Nombre: Nombre de la variable para utilizarla en código.
Ejemplos:
Dictionary<string, Object>
Dictionary<int, string>
Dictionary<Object, Object>
Dictionary<string, string>
En nuestro caso Utilizaremos el mas habitual y que nos permita crear una Entidad Dinámica.
Dictionary<string, Object> DinamyObj = new Dictionary<string, Object>();
En esta modalidad puedes almacenar lo que sea en este objeto y sabrás donde esta cada cosa que adiciones dentro de ella a través de su Key.
Para Adicionar utiliza el Método Add que permite agrega la clave y el valor especificados al diccionario.
Ejemplo Adicionar la Fecha Actual,un valor Booleano Un string o entero:
DinamyObj.Add(“FechaActual”,DateTime.Now());
DinamyObj.Add(“Nombre”,”Javier Leal”);
DinamyObj.Add(“Edad”,25);
DinamyObj.Add(“Activo”,true);
Si puedes Adicionar Obviamente puede Eliminar Valores para ello en el Método Remove
DinamyObj.Remove(“Edad”);
O el Método Clear en caso de querer Eliminar todos los valores.
DinamyObj.Clear();
Además de esto hay Métodos donde puedes buscar verificar si un valor en especifico tales son los casos de los Métodos ContainsKey Determina si la colección Dictionary contiene la clave especificada y el ContainsValue Determina si la colección Dictionary contiene un valor específico.
Ejemplo:
DinamyObj.Containskey(“Apellido”); Devuelve: False
DinamyObj.ContainsValue(25); Devuelve: True
DinamyObj.Containskey(“Nombre”); Devuelve: True
DinamyObj.ContainsValue(False); Devuelve: False
A este tipo de objetos podemos hacerle un recorrido para conocer o listar todas sus claves o sus valores para acceder a esos valores
Ejemplo:
DinamyObj.Keys Devuelve: Un diccionario con los valores de las claves
DinamyObj.Values Devuelve: Un diccionario con los valores
Luego de que estos objetos ya están creados se puede editar y asignar de esta manera por ejemplo para cambiar el valor de edad seria:
DinamyObj[“Edad”] = 27;
y para escribirlo en un control por ejemplo en un texto seria
TXTEdad.Text = DinamyObj[“Edad”].ToString();
Cabe destacar que hacemos conversión de String debido a que el devuelve es un Object entonces si estamos por ejemplo devolviendo un valor Bool como es caso del valor Clave Activo a un control CheckBox seria
Check.IsChecked = Convert.ToBoolean(DinamyObj[“Edad”]);
A su vez también es importante para cuando estamos aplicando en Patrón MVVM en nuestros proyectos saben enlazar estos Objetos a través de enlaces Binding, Ejemplo asignando un valor a un Textbox y un check
<TextBox> Text="{Binding DinamyObj[Nombre], Mode=TwoWay}"/>
<CheckBox> IsChecked ="{Binding DinamyObj[Activo], Mode=TwoWay}"/>
Por ultimo estos objetos como todos podemos agregarlos a colecciones para tener listas de diccionarios que pueden ser enlazados de igual manera que que cualquier colección
List<Dictionary<string, Object>> ListDictionary
Espero que le saquen provecho a la información pueden buscar mas información por la Documentación Original.
http://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.95).aspx