更新:我把问题表述错了。内部和外部纬度/经度成员都需要相互更新,从而导致递归。外部成员由数据库上下文更新,而内部成员由 UI 更新。因此,数据库中的任何更改都必须传播到 UI,反之亦然。Coordinates 类不能与 UI 分离,外部成员不能与数据库分离。
我想一个防止递归的标志将是解决这个问题的最简单方法。
我有以下课程:
class Coordinates
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
class Location
{
public string Name { get; set; }
public Coordinates Coordinates { get; set; }
public double CoordinateLatitude
{
get { return (this.Coordinates.Latitude); }
set { /* This member needs to get updated every time Location.Coordinates.Latitude gets updated. */ }
}
public double CoordinateLongitude
{
get { return (this.Coordinates.Latitude); }
set { /* This member needs to get updated every time Location.Coordinates.Latitude gets updated. */ }
}
}
成员CoordinateLatitude
和CoordinateLongitude
映射到坐标类。我想要实现的也是相反的。所以当Coordinates
类更新时,类的成员Location
也应该更新。不要问我为什么代码的结构是这样的,因为我目前无权更改它。
整个项目中有很多代码设置了 Coordinates 类的成员:location.Coordinates.Latitude = 10.0D;
等。由于Coordinates
该类(和许多其他类)是轻量级数据结构,并且在许多地方被粗心地使用,我不想将它们捆绑起来到事件。
我的问题是,如何让 Location.Coordinates 成员更新 Location.CoordinateLatitude 值?有没有一种标准的方法来设置这样的回调而不需要IDisposable
清理(就像事件一样)?