예제 #1
0
        /// <summary>
        /// Devuelve una copia de este objeto.
        /// </summary>
        public override object Clone()
        {
            // Como los campos son invariables entonces no necesitamos
            // hacer copias de ellos.
            List <Campo> camposNuevos = new List <Campo>(Campos.Count);

            foreach (Campo campo in Campos)
            {
                camposNuevos.Add(campo);
            }

            Pdi clone = new Pdi(ManejadorDeMapa, Número, Clase, camposNuevos);

            return(clone);
        }
예제 #2
0
        /// <summary>
        /// Retorna una variable lógica indicando si un PDI dado
        /// tien la misma información que este PDI.
        /// </summary>
        /// <param name="elPdi">El PDI dado.</param>
        public bool TieneLaMismaInformación(Pdi elPdi)
        {
            bool tieneLaMismaInformación = false;

            // El PDI tiene la misma información si:
            //  - El nombre es igual.
            //  - El tipo es igual.
            //  - Las coordenadas son iguales.
            //  - La información de los campos son iguales.
            if ((Nombre == elPdi.Nombre) &&
                (Tipo == elPdi.Tipo) &&
                (Coordenadas == elPdi.Coordenadas) &&
                (Campos.Count == elPdi.Campos.Count))
            {
                // Ahora hay que asegurarse que todos lo campos son iguales.
                tieneLaMismaInformación = true;

                foreach (Campo campo in Campos)
                {
                    bool encontróCampoIgual = false;
                    foreach (Campo campoAComparar in elPdi.Campos)
                    {
                        if (campo == campoAComparar)
                        {
                            encontróCampoIgual = true;
                            break;
                        }
                    }

                    // Si no encontró un campo igual entonces el PDI
                    // no contiene la misma información.
                    if (!encontróCampoIgual)
                    {
                        tieneLaMismaInformación = false;
                        break;
                    }
                }
            }

            return(tieneLaMismaInformación);
        }