2012-03-21 48 views
0

我需要表示一個對象的屬性與另一個datasourace的不同。我有兩個數據源,當我從其中一個數據源拉出時,我需要一種方法來確定該數據源中的對象的任何屬性是否與其他數據源不同。表示一個屬性不同於另一個對象

DSA Object1.Value = 3

DSB Object1.Value = 4

顯然,確定它們是不同的是容易的。然而,我想要的是能夠說DSB.Object1.Value是「不同」,而不需要將對象從DSA傳​​遞到視圖。

我最初的做法是有一個PropertyWrapper類

public class PropertyWrapper<T> 
{ 
    T value; 
    bool different; 
} 

是否有更好的方式,通過屬性或擴展來表示呢?

編輯:從「更改」更改爲「不同」表示。我不需要實時「更改」,而是需要表示該屬性與另一個數據源中同一對象的相同屬性不同。

+1

更好的方法是什麼?性能?可讀性?發展的難易程度? – Oded 2012-03-21 19:58:44

+0

這是一個非常好的問題。可讀性。通過這種方法,我將擁有一個具有不同類型的12個PropertyWrapper屬性的類。 – Quickhorn 2012-03-21 19:59:54

回答

1

考慮到您將其從數據源中提取出來,第一個解決方案是使用boolean內的一些字段,如IsChanged

換句話說:

的「經營者」誰在操作的對象應該改變它裏面的狀態/場的護理,以通知外界的東西在那個對象改變。

目前對此沒有簡單的解決方案,但你可以定義一些通用接口,像INotifyPropertyChanged,或發明你自己,誰方法SignalChanged上調用每個屬性set功能。

只是一個想法,可能有很多其他解決方案。

+0

需要爲對象的每個屬性表示IsChanged。 – Quickhorn 2012-03-21 20:01:58

+0

我會改變它來存儲初始值。這樣,如果它再次更改回原來的IsChanged屬性可能會返回false。 – Matt 2012-03-21 20:03:44

+0

@Quickhorn:否'IsChanged'是一個對象的屬性。或者如果你想要更精確一點,你可以有一些List'Changes ',它包含從最後一個「清除」狀態變異的所有屬性值。 – Tigran 2012-03-21 20:04:52

0

我會建議每個對象實現INotifyPropertyChanged(像NotifyPropertyWeaver這樣的事情使這很容易),然後某種中央對象可以掛鉤兩個實例,以確定它們是否在第一次從數據源中提取值後進行更改。

+0

我已編輯的問題更清楚。我不需要實時更改檢查,但是表示對象B具有與對象A不同的值(以及哪些值不同),而不需要對象A. – Quickhorn 2012-03-21 20:02:56

0

我建議使用DateTime timestamp屬性;隨時隨地更新它以進行更改。

這還有一個額外的好處,即讓您知道何時進行了更改。 (當多個數據源訪問數據,版本化數據等時這很有用)

+0

這是比我需要更多的信息。我需要的只是知道從一個數據源屬性拉出的對象是否與另一個數據源屬性不同,並存儲該信息。 – Quickhorn 2012-03-21 20:06:40

相關問題