C sharp - Comparacion entre objets del mismo tipo

   
Vista:

Comparacion entre objets del mismo tipo

Publicado por Nadia (6 intervenciones) el 06/05/2011 01:25:53
Hola buenas tardes, para un proyecto necesito saber si un objeto es igual a otro, los dos son del mismo tipo, es decir son instancias de una misma clase, hay formas de hacerlo pero que comparan el espacio en memoria y pues ya son distintos aunque sus atributos contengan lo mismo, entonces de el primer objeto hago un clon y ya despues modifico el original y el clon se queda como antes ya luego utilizo una funcion CompareTo que programe pero que aunque los atributos tengan lo mismo nadamas no me funciona, ojala alguien pudiera decirme en que estoy mal, gracias de antemano!!!

Aqui la funcion CompareTo

//funcion para comparar un objeto con otro objeto del mismo tipo
public int CompareTo(object objeto)
{
int result = 0;

PropertyInfo[] propiedadesObjeto = objeto.GetType().GetProperties();//tipo.GetType().GetProperties();

for (int i = 2; i < propiedadesObjeto.Length; i++)
{

if (propiedadesObjeto[i].GetValue(objeto, null) != propiedadesObjeto[i].GetValue(this, null))
{
result = 1;
break;
}
}
return result;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Comparacion entre objets del mismo tipo

Publicado por Sebastian Cruz (51 intervenciones) el 08/05/2011 00:53:59
Buenas por que no intentas preguntar si el objeto pasado por parametro coincide con el que posee el metodo que creaste, con lo cual tu funcion quedaria mas o menos asi

public int Comparar(object oc)
{
Type tipoObjeto = oc.GetType();
Type miTipo = this.GetType();

if (miTipo.FullName == tipoObjeto.FullName) //Controlo que sean iguales
{
Persona p = (Persona)oc; //Convierto implicitamente mi objeto en una persona
int res = 1;

foreach (PropertyInfo pi in p.GetType().GetProperties())
{
if (pi.GetValue(p, null) != pi.GetValue(this, null))
{
res=0;
break;
}
}
return res;


}
return 0;
}

Espero que sea de ayuda. Saludos =)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar