// Compara este objeto con atributos dinámicos con otro y dice si son iguales public bool Equals(ObjectWithDynamicAttributes o) { if (o == null) { return(false); } if (this == o) { return(true); } return(attributes.Equals(o.attributes)); }
/** * Crea y devuelve una copia de este objeto con atributos dinámicos. */ public ObjectWithDynamicAttributes Copy() { ObjectWithDynamicAttributes copy = null; try { // Como no se puede crear un ejemplar de esta clase abstracta, con esta línea de código se crea un ejemplar de la clase CONCRETA que seamos en realidad copy = (ObjectWithDynamicAttributes)Activator.CreateInstance(GetType()); // getClass().newInstance() //copy.attributes.putAll(attributes); foreach (var attr in attributes) { copy.attributes.Add(attr.Key, attr.Value); } } catch (Exception ex) { Console.WriteLine(ex); // ex.printStackTrace(); aunque no me gusta la idea de mostrar cosas por consola directamente aquí } return(copy); }