更新:我说错了这个问题。内外纬度/经度成员都需要互相更新,从而导致递归。外部成员通过数据库上下文进行更新,而内部成员通过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
类的成员也应该更新。不要问我为什么代码的结构是这样的,因为我现在无权改变它。
还有就是整个代码,设置坐标类的成员项目一标段:location.Coordinates.Latitude = 10.0D;
等。因为Coordinates
类(和许多其他人)是轻量级的数据结构,并在很多地方不小心使用,我做不想把他们和事件联系起来。
我的问题是,我如何让Location.Coordinates成员更新Location.CoordinateLatitude值?有没有一个标准的方式来设置这样的回调,而不需要清理(如在事件情况下)IDisposable
?
听起来像你需要一个属性事件监听器,即使你不想要事件.. – 2013-05-06 17:29:13
这似乎已经这样做了你在问什么... – FlyingStreudel 2013-05-06 17:29:43
如果你连接'set'方法的基本方式相同'get'方法,它应该做你想做的事,不是?不需要回调。将您的公共属性'CoordinateLatitude'和'CoordinateLongitude'想象为'Coordinates'成员相应属性的别名。 – 2013-05-06 17:31:25