/// <summary> /// Obtiene o establece el valor del objeto con la llave seleccionada. /// </summary> /// <param name="key">Corresponde al nombre que se le dio al objeto al generar la llave</param> /// <param name="tdDevolver">Es el enumerador que indica que tipo de valor se va a devolver: </para> /// Entero devuelve - 0 si el valor es de otro tipo o la llave no existe, </para> /// Cadena devuelve - devuelve el valor convertido a string y vacio ("") si la llave /// no existe, </para> /// Objeto devuelve - null si es de otro tipo o la llave no existe, </para> /// Control devuelve - new Control() si es de otro tipo o la llave no existe. </para> /// stdClass devuelve - new stdClassCSharp si es de otro tipo o no existe. </para> /// Boleano devuelve - true o false si el objeto tiene o no tiene valor.</param> public dynamic this[string key, TiposDevolver tdDevolver] { get { return(fDevuelveValoresPorTipo(key, tdDevolver)); } set { var p = propiedadesGeneradas as IDictionary <String, object>; p[key.ToString()] = value; } }
/// <summary> /// Obtiene o establece el valor del objeto con el indice seleccionado. /// </summary> /// <param name="key">Corresponde al indice en caso de que se quiera tomar como algun arreglo</param> /// <param name="tdDevolver">Es el enumerador que indica que tipo de valor se va a devolver: /// Entero devuelve - 0 si el valor es de otro tipo o la llave no existe, /// Cadena devuelve - devuelve el valor convertido a string y vacio ("") si la llave no existe, /// Objeto devuelve - null si es de otro tipo o la llave no existe, /// Control devuelve - new Control() si es de otro tipo o la llave no existe.</param> public dynamic this[int key, TiposDevolver tdDevolver] { get { string llave = ((IDictionary <String, object>)propiedadesGeneradas).Keys.ElementAt(key); return(fDevuelveValoresPorTipo(llave, tdDevolver)); } set { var p = propiedadesGeneradas as IDictionary <String, object>; if (((IDictionary <String, object>)propiedadesGeneradas).Keys.Count > key) { string llave = ((IDictionary <String, object>)propiedadesGeneradas).Keys.ElementAt(key); p[llave.ToString()] = value; } else { p[key.ToString()] = value; } } }
/// <summary> /// Obtiene el valor correspondiente por el tipo de dato requerido /// </summary> /// <param name="key">La llave que apunta al objeto</param> /// <param name="tdDevolver">Corresponde al tipo de dato que se desea devolver</param> /// <returns></returns> private dynamic fDevuelveValoresPorTipo(string key, TiposDevolver tdDevolver) { var ValorDevolver = 0; if (!((IDictionary <String, object>)propiedadesGeneradas).ContainsKey(key)) { switch (tdDevolver) { case TiposDevolver.Entero: return(0); case TiposDevolver.Cadena: return(""); case TiposDevolver.Objeto: return(null); case TiposDevolver.stdClass: return(new stdClassCSharp()); case TiposDevolver.Boleano: return(false); } } else { var p = ((IDictionary <String, object>)propiedadesGeneradas); switch (tdDevolver) { case TiposDevolver.Entero: int iEntero = 0; if (this[key, TiposDevolver.Boleano]) { int.TryParse(p[key].ToString(), out iEntero); } return(iEntero); case TiposDevolver.Cadena: try { string sString = ""; if (this[key, TiposDevolver.Boleano]) { sString = p[key].ToString(); } return(sString); } catch { return(string.Empty); } case TiposDevolver.Objeto: if (this[key, TiposDevolver.Boleano]) { return((Object)p[key]); } else { return(null); } case TiposDevolver.stdClass: if (this[key, TiposDevolver.Boleano] && p[key] is stdClassCSharp) { return(p[key] as stdClassCSharp); } else { return(new stdClassCSharp()); } case TiposDevolver.Boleano: if (p[key] == null) { return(false); } else if (p[key] is bool) { return((bool)p[key]); } else { return(true); } } } return(ValorDevolver); }