c#如何用反射判断同一个类的两个实例的值是否完全一样
publicclassTempClass{inta;intb;stringc;stringd;boole;boolf;publicintA{set{a=value;}ge...
public class TempClass
{
int a;
int b;
string c;
string d;
bool e;
bool f;
public int A
{
set { a = value; }
get { return a; }
}
public int B
{
set { b = value; }
get { return b; }
}
public string C
{
set { c = value; }
get { return c; }
}
public string D
{
set { d = value; }
get { return d; }
}
public bool E
{
set { e = value; }
get { return e; }
}
public bool F
{
set { f = value; }
get { return f; }
}
}
类很简单 现在我有TempClass的两个实例化TempA和TempB,我如何用反射的方法判断他们两个里面的属性的具体值都是一样的?
直接用Equals不行,因类是引用对象,两个的内存地址不一样,Equals当然返回FALSE了,但是用反射该怎么实现呢?我还真不知道,请高手指点。 展开
{
int a;
int b;
string c;
string d;
bool e;
bool f;
public int A
{
set { a = value; }
get { return a; }
}
public int B
{
set { b = value; }
get { return b; }
}
public string C
{
set { c = value; }
get { return c; }
}
public string D
{
set { d = value; }
get { return d; }
}
public bool E
{
set { e = value; }
get { return e; }
}
public bool F
{
set { f = value; }
get { return f; }
}
}
类很简单 现在我有TempClass的两个实例化TempA和TempB,我如何用反射的方法判断他们两个里面的属性的具体值都是一样的?
直接用Equals不行,因类是引用对象,两个的内存地址不一样,Equals当然返回FALSE了,但是用反射该怎么实现呢?我还真不知道,请高手指点。 展开
2个回答
展开全部
你可以用this.getClass().getDeclaredFields()然后比较所有基本类型字段。不过最好的方法是重写TempClass的Equals
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static bool ObjectEquel(TempClass obj1, TempClass obj2)
{
Type type1 = obj1.GetType();
Type type2 = obj2.GetType();
System.Reflection.PropertyInfo[] properties1 = type1.GetProperties();
System.Reflection.PropertyInfo[] properties2 = type2.GetProperties();
bool IsMatch = true;
for (int i = 0; i < properties1.Length; i++)
{
string s = properties1[i].DeclaringType.Name;
if (properties1[i].GetValue(obj1, null).ToString() != properties2[i].GetValue(obj2, null).ToString())
{
IsMatch = false;
break;
}
}
return IsMatch;
}
{
Type type1 = obj1.GetType();
Type type2 = obj2.GetType();
System.Reflection.PropertyInfo[] properties1 = type1.GetProperties();
System.Reflection.PropertyInfo[] properties2 = type2.GetProperties();
bool IsMatch = true;
for (int i = 0; i < properties1.Length; i++)
{
string s = properties1[i].DeclaringType.Name;
if (properties1[i].GetValue(obj1, null).ToString() != properties2[i].GetValue(obj2, null).ToString())
{
IsMatch = false;
break;
}
}
return IsMatch;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询