【发布时间】:2014-01-08 08:19:42
【问题描述】:
我的应用程序中有许多具有大量属性的对象。这些对象代表数据库行(轻量级 ORM)。我想知道是否有任何方法可以确定对象中的属性是否已更改。例如,我意识到我“可以”这样做......
// Property for showing us whether a value in this object has changed
private bool _HasChanged = false;
public bool HasChanged
{
get
{
return _HasChanged;
}
private set
{
_HasChanged = value;
}
}
// My list of properties
private string _FirstName;
public string FirstName
{
get
{
return _FirstName;
}
set
{
_HasChanged = true;
_FirstName = value;
}
}
private string _LastName;
public string LastName
{
get
{
return _LastName;
}
set
{
_HasChanged = true;
_LastName = value;
}
}
private int _Age;
public int Age
{
get
{
return _Age;
}
set
{
_HasChanged = true;
_Age = value;
}
}
但是如果我使用上面的例子,这意味着每个对象都有很多代码(有些对象最多有 40 个属性,而我有大约 30 个不同的对象)。我想做的是更像这样的事情......
// Property for showing us whether a value in this object has changed
private bool _HasChanged = false;
public bool HasChanged
{
get
{
return _HasChanged;
}
private set
{
_HasChanged = value;
}
}
// My list of properties
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
如果我能做到以上几点,并在对象中的任何属性发生变化时以某种方式全局设置我的 HasChanged,那真的会加快我的开发过程。
任何关于如何更好地做到这一点的想法或指示将不胜感激。这是在 C# 中使用 NET 4.0(尽管如果有帮助我可以使用 4.5!)
非常感谢,
【问题讨论】:
-
好吧,用你的代码,如果你将一个属性的值设置为它已经拥有的值,HasChanged 将是真的......这是假的;)
-
看,这实际上是一个好点! :)