表示属性与另一个对象不同

时间:2012-03-21 19:54:41

标签: c# .net

我需要表示对象上的属性与另一个datasourace中的属性不同。我有两个数据源,当我从一个数据源中提取时,我需要一种方法来确定该数据源中对象的任何属性是否与其他数据源不同。

DSA   Object1.Value = 3

DSB   Object1.Value = 4

显然,确定它们不同很容易。但是,我想要的是能够说DSB.Object1.Value是“不同的”,而不需要将对象从DSA传​​递给视图。

我最初的方法是拥有一个PropertyWrapper类

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

有没有更好的方法通过属性或扩展来表示这一点?

编辑:从“已更改”更改为“不同”表示。我不需要实时“更改”,而是需要一个表示该属性与来自另一个数据源的同一对象的相同属性不同。

3 个答案:

答案 0 :(得分:1)

考虑到你从数据源中提取它,我遇到的第一个解决方案是使用boolean字段内的一些字段,比如说IsChanged

换句话说:

&#34;运营商&#34;操作该对象的人应该注意改变其中的状态/字段,以便向外界通知该对象中的某些内容已发生变化。

没有简单的解决方案,但您可以定义一些通用接口,例如INotifyPropertyChanged,或者发明您自己的接口,在每个属性SignalChanged函数上调用方法set

只是一个想法,可能还有很多其他解决方案。

答案 1 :(得分:0)

我建议每个对象实现INotifyPropertyChanged(类似NotifyPropertyWeaver之类的东西使这很简单),然后某种中心对象可以与两个实例连接,以确定它们是否在首次从数据源中提取值后发生了变化

答案 2 :(得分:0)

我建议使用DateTime时间戳属性;只要进行更改,就可以使用当前时间更新它。

这有一个额外的好处,让你知道什么时候做出改变。 (当多个源访问数据,对数据进行版本控制等时,这很有用)。