void IXBRLContenedorInstanciasObjetos.InsertarObjeto(IConcepto objeto) { string tipo = objeto.GetType().Name; IXBRLContenedorInstanciasObjetos p = this; ICollection<object> col = p.ObtenerInstanciaObjetosPorConcepto(tipo); col.Add(objeto); if (_map.Contains(tipo)) { _map[tipo] = col; } else { _map.Add(tipo, col); } }
void IXBRLContenedorInstanciasObjetos.InsertarObjeto(IConcepto objeto) { string tipo = objeto.GetType().Name; IXBRLContenedorInstanciasObjetos p = this; ICollection <object> col = p.ObtenerInstanciaObjetosPorConcepto(tipo); col.Add(objeto); if (_map.Contains(tipo)) { _map[tipo] = col; } else { _map.Add(tipo, col); } }
private void procesarTuple(XmlElement elemento) { string[] partes = elemento.Name.Split(':'); string nombreTupla = partes[partes.Length - 1].Replace('-', '_'); GeneradorClase generador = GeneradorClase.getInstance(_ensambladoCiente); object objetoInstancia = generador.ObtenerInstancia(nombreTupla); Type tipoInstancia = objetoInstancia.GetType(); try { foreach (XmlElement hijo in elemento.ChildNodes) { string valor = hijo.FirstChild.Value; string[] hijoPartes = hijo.Name.Split(':'); string nombreHijo = hijoPartes[hijoPartes.Length - 1]; rellenarAtributo(objetoInstancia, tipoInstancia, valor, nombreHijo); } } catch (InvalidCastException) { string valor = elemento.FirstChild.Value; rellenarAtributo(objetoInstancia, tipoInstancia, valor, "Valor"); } //buscamos el contexto string idContext = elemento.GetAttribute("contextRef"); IContexto contexto = (IContexto)_contextos[idContext]; IConcepto conceptoInstancia = (IConcepto)objetoInstancia; conceptoInstancia.setContexto(contexto); IXBRLContenedorInstanciasObjetos contenedor = XBRLContenedorObjetosInstancias.ObtenerInstancia(); contenedor.InsertarObjeto((IConcepto)objetoInstancia); }
private void rellenarElementoAPartirDeInstancia(XmlNode element, object instancia, XmlDocument nuevoDocumento) { Type tipo = instancia.GetType(); try { MethodInfo metodo = tipo.GetMethod("get_Valor"); object valor = metodo.Invoke(instancia, new object[] { }); XmlText textoValor = null; if (valor != null) { textoValor = nuevoDocumento.CreateTextNode(valor.ToString()); } else { textoValor = nuevoDocumento.CreateTextNode(""); } element.AppendChild(textoValor); } catch (NullReferenceException) { string nombre = "", qualifiedName = "", uriName = "", prefijo = ""; obtenerAtributosParametros(ref nombre, ref prefijo, ref qualifiedName, ref uriName, instancia); foreach (MethodInfo metodo in tipo.GetMethods()) { string nombreMetodo = metodo.Name; if (nombreMetodo.Substring(0, 4).Equals("get_")) { qualifiedName = nombreMetodo.Substring(4); XmlNode subElement = nuevoDocumento.CreateElement(prefijo, qualifiedName, uriName); object valor = metodo.Invoke(instancia, new object[] { }); XmlText textoValor = null; if (valor != null) { textoValor = nuevoDocumento.CreateTextNode(valor.ToString()); } else { textoValor = nuevoDocumento.CreateTextNode(""); } subElement.AppendChild(textoValor); element.AppendChild(subElement); } } } IConcepto conceptoInstancia = (IConcepto)instancia; IContexto contexto = conceptoInstancia.getContexto(); if (contexto != null) { XmlAttribute idContexto = nuevoDocumento.CreateAttribute("contextRef"); idContexto.Value = contexto.Id; element.Attributes.Append(idContexto); } }