我想实现一个非常简单的,更重要的类似实体框架轨道如何对象更改(How change tracking works in Entity Framework)可选的对象跟踪系统的性能变化。隐式检测对象
我有一个基类的所有其他对象继承。这个类有一个叫做modified的布尔字段。明确的解决方案是在setter被触发时更新其他类的所有属性的每个setter以设置modified = true
。这种解决方案已在这里详细介绍了Create an event to watch for a change of variable。
我想这是一个比较含蓄的解决方案。我有很多对象和很多属性。更新二传手是非常麻烦的。我不想直接模仿实体框架如何执行任务,因为它对我当前的需求来说太昂贵了。我想要一个对象列表,我可以循环检查modified == true
。这使我可以选择跟踪对象,并快速检查它们是否发生更改,而不必为每个单独的对象触发更新。有没有一种方法可以隐式地为所有属性getter和setter设置某种监听器?
我知道这个代码犯规存在,但.NET有办法监视的对象,看它是否已经改变。
[OnChange=ObjectChanged()] //maybe this way
public class MyClass
{
bool modified {get; set;}
public MyClass() : OnChange(ObjectChanged) //or this way
{
}
private void ObjectChanged()
{
modified = true;
}
}
正如我所提到的,我不想更新每个setter或复制什么实体框架。
可能重复[如何检查对象是否已更改?](https://stackoverflow.com/questions/7952616/how-to-check-if-an-object-has-changed) – Adam
@亚姆请在建议它是基于标题的重复之前阅读该问题。 –
@DanHastings,或者阅读*答案*不仅仅是问题,以确定它是否足够接近您的问题,以指向正确的方向。重复并不意味着问题是相同的 - 它也可以是相同的答案 – Jamiec