获取相同对象中的已更改属性

我有一个具有五个属性的对象,每个属性都有两个状态(“之前”和“之后”)。

如何获取有关哪些属性更改其状态的信息?

我熟悉的唯一方法是获取所有属性的列表(使用Reflection?),然后使用循环比较两个对象之间的每个属性并存储有关已更改的属性的信息。

是否有一种简单的方法可以使用LINQ?

你可以这样做:

 public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e); public class PropertyChangedEventArgs : EventArgs { public PropertyChangedEventArgs(string propertyName, dynamic oldValue, dynamic newValue) { this.PropertyName = propertyName; this.OldValue = oldValue; this.NewValue = newValue; } public virtual string PropertyName { get; private set; } public virtual dynamic OldValue { get; private set; } public virtual dynamic NewValue { get; private set; } } public class PropertyClass { public event PropertyChangedEventHandler PropertyChanged; private void Set(string propertyName, ref T field, T value) { if (field.Equals(value)) return; T oldValue = value; field = value; if (this.PropertyChanged != null) this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName, oldValue, value)); } // Properties private string _name; private string _message; private bool _isMember; public string Name { get { return _name; } set { Set("Name", ref _name, value); } } public string Message { get { return _message; } set { Set("Message", ref _message, value); } } public bool IsMember { get { return _isMember; } set { Set("IsMember", ref _isMember, value); } } }