/// <summary> /// Realiza una copia de la clase específicada /// </summary> /// <param name="original">Clase a copiar</param> /// <returns></returns> public static Clase Copiar(Clase original) { Clase prueba = new Clase(); ///Copia los simbolos foreach (var lst01 in original.ClaseSym) { Simbolo symPrueba = new Simbolo { Arr = lst01.Value.Arr, Dato = lst01.Value.Dato, EsPrivado = lst01.Value.EsPrivado, Oper = lst01.Value.Oper, TipoDato = lst01.Value.TipoDato }; if (lst01.Value.Arreglo != null) { Arreglo arr = new Arreglo { Dimension = lst01.Value.Arreglo.Dimension, SizeBi = lst01.Value.Arreglo.SizeBi, SizeUni = lst01.Value.Arreglo.SizeUni, SizeTri = lst01.Value.Arreglo.SizeTri }; symPrueba.Arreglo = arr; } if (lst01.Value.Posicion != null) { Posicion pos = new Posicion(lst01.Value.Posicion.Fila, lst01.Value.Posicion.Columna); symPrueba.Posicion = pos; } prueba.ClaseSym.Add(lst01.Key.ToString(), symPrueba); } ///Copia los nombre de las clases importadas foreach (var lst01 in original.ClaseImpNames) { prueba.ClaseImpNames.AddLast(lst01.ToString()); } ///Copia las funciones de la clase foreach (var lst01 in original.ClaseEnt) { Funcion funcion = Funcion.Copiar(lst01.Value); funcion.ClaseEnt = prueba.ClaseEnt; funcion.ClaseImp = prueba.ClaseImp; funcion.ClaseImpNames = prueba.ClaseImpNames; funcion.ClaseSym = prueba.ClaseSym; prueba.ClaseEnt.Add(lst01.Key, funcion); } ///Copia las clases importadas foreach (var lst01 in original.ClaseImp) { prueba.ClaseImp.Add(lst01.Key.ToString(), Copiar(lst01.Value)); } return(prueba); }