有没有简单的方法来检查任何类实例是否有修改



假设我有一个这样的类:

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

Greg Finzer的Compare.NET Objects 1.4.2.0http://www.nuget.org/packages/CompareNETObjects

添加额外属性以保持对象的状态:

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

最新更新