Greg Finzer的Compare.NET Objects 1.4.2.0http://www.nuget.org/packages/CompareNETObjects
假设我有一个这样的类:
class Test
{
string asd;
int dsa;
}
稍后,我创建了这个类的实例,然后它可能会更改数据成员的值
我需要一个简单的比较方法,不需要比较所有类成员
类似的东西:
Test t = new Test();
t.asd = "asd";
SOMETHING SMTH = GetSOMETHINGof(t);
a.dsa = 3;
if (GetSOMETHINGof(t) != SMTH)
//object modified
也许有人知道内置的东西可以用来做这件事?我知道我可以实现平等等,但那不是我想要的。班级太多,成员太多
我使用C#和.net 4.0
添加额外属性以保持对象的状态:
public class A
{
public bool HasChanged { get; set; }
object _Value;
public object Value
{
get
{
return _Value;
}
set
{
HasChanged = value != _Value;
_Value = value;
}
}
public A(object _value)
{
_Value = _value;
HasChanged = false;
}
}
并使用它:
A a = new A(5);
Console.WriteLine(a.HasChanged); //false
a.Value = 6;
Console.WriteLine(a.HasChanged); //true
a.HasChanged = false;
Console.WriteLine(a.HasChanged); //false