我有一堆业务类与autoproperties:
public class A {
public int Id { get; set; }
public string Title { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
由于应用程序不断发展,因此需要启用跟踪属性更改的新要求,以便仅向后备存储库发送已更改的数据.
为了达到这个目标,我必须将所有属性转换为字段+属性,如下所示:
public class A {
private int m_Id;
public int Id {
get { return m_Id; }
set {
if(m_Id != value){
SetChanged("Id");
m_Id = value;
}
}
}
private string m_Title;
public string Title
{
get { return m_Title; }
set {
if(m_Title != value){
SetChanged("Title");
m_Title = value;
}
}
}
protecte void SetChanged(string propertyName) {
// Not important here
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法快速重构我的代码,以避免手动更改属性?
您始终可以创建一个通用方法来执行分配并调用SetChange
void SetChangeIfNeeded<T>(ref T field, T value, string propertyName)
{
if (!EqualityComparer<T>.Default.Equals(field, value))
{
field = value;
SetChanged(property);
}
}
Run Code Online (Sandbox Code Playgroud)
你仍然需要有一个私人后场。你的课程看起来像这样:
public class A {
private int m_id
public int Id
{
get { return m_id };
set { SetChangeIfNeeded<int>(ref m_id, value, "Id"); }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2174 次 |
| 最近记录: |