public Grupo loadGrupo(string nombre) { string jsonpath = server.MapPath("grupos/" + nombre + "/" + nombre + ".json"); if (System.IO.File.Exists(jsonpath)) { Grupo ret; System.IO.StreamReader fs = new System.IO.StreamReader(jsonpath, System.Text.Encoding.UTF8); //System.IO.StreamReader fs = System.IO.File.OpenText(jsonpath); string s = fs.ReadToEnd(); fs.Close(); List <Type> tipos = new List <Type>(); tipos.Add(typeof(Arbol)); tipos.Add(typeof(Usuario)); tipos.Add(typeof(Nodo)); tipos.Add(typeof(Comentario)); tipos.Add(typeof(Variable)); tipos.Add(typeof(Hijo)); //tipos foreach (Organizacion org in Organizacion.getOrganizaciones()) { tipos.Add(org.GetType()); //modelos de documento foreach (Modelo mod in org.getModelosDocumento()) { tipos.Add(mod.GetType()); } //modelos de evaluacion foreach (ModeloEvaluacion mod in org.getModelosEvaluacion()) { tipos.Add(mod.GetType()); } //otros objetos foreach (object mod in org.getSeriealizableObjects()) { tipos.Add(mod.GetType()); } } ret = Tools.fromJson <Grupo>(s, tipos); ret.path = server.MapPath("grupos/" + nombre); try { ret.URL = request.UrlReferrer.AbsoluteUri.Substring(0, request.UrlReferrer.AbsoluteUri.LastIndexOf("/")); } catch (Exception) { } //modelos viejos if (ret.arbol == null) { ret.arbol = new Arbol(); } //actualizo modelos ret.arbol.grupo = ret; //padre del arbol, referencia ciclica, no se puede serializar ret.queso.grupo = ret; //padre del queso, referencia ciclica, no se puede serializar addLog("loadGrupo(): [" + ret.nombre + "] leido de disco"); return(ret); } else { throw new appException("El grupo no existe"); } }