更新:我說錯了這個問題。內外緯度/經度成員都需要互相更新,從而導致遞歸。外部成員通過數據庫上下文進行更新,而內部成員通過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