Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IEditableObject定位实现_C#_.net_Wpf - Fatal编程技术网

C# IEditableObject定位实现

C# IEditableObject定位实现,c#,.net,wpf,C#,.net,Wpf,我正在寻找一个支持脏数据跟踪的实现,它不仅适用于具有(基本)属性的单个对象,而且适用于可能包含引用和集合属性的整个对象图。如果没有这样的实现,您能提供一些指导或提示吗?因为我很快就需要它了。我看到了一些可能的解决方案: 找到一个支持这一点的组件套件(我见过在DevExpress套件之上构建的框架可以做到这一点,但不确定它是否是内置的) 找到一个代码生成器来帮助减少需要编写的样板代码(NuGet可能是一个很好的起点) 使用PostSharp注入代码来处理问题(或其他AOP工具) 将所有数据包装在

我正在寻找一个支持脏数据跟踪的实现,它不仅适用于具有(基本)属性的单个对象,而且适用于可能包含引用和集合属性的整个对象图。如果没有这样的实现,您能提供一些指导或提示吗?因为我很快就需要它了。

我看到了一些可能的解决方案:

  • 找到一个支持这一点的组件套件(我见过在DevExpress套件之上构建的框架可以做到这一点,但不确定它是否是内置的)
  • 找到一个代码生成器来帮助减少需要编写的样板代码(NuGet可能是一个很好的起点)
  • 使用PostSharp注入代码来处理问题(或其他AOP工具)
  • 将所有数据包装在事务中,并使用VolatileTransactionManager(IDesign已在其网站上发布了此解决方案的代码,但我担心性能)
  • 使您的数据结构高度可克隆,并在提交更改之前继续克隆。这个解决方案可能是最容易编写和调试的。类似于库的库包括深度克隆对象图的扩展,或者您可以简单地序列化/反序列化以生成副本

选择,选择

将检查第一个选项以查看弹出的内容,PostSharp很好,因为这是一个交叉关注点。我有一个问题,你的最后一个建议我知道这很容易编码,但我如何检测变化,脏跟踪对我来说很重要,也许还有一个链接或更多关于第四个选项的信息?谢谢#5:您可能需要编写逻辑来递归比较对象图,除非您能够直接使用新的对象图(例如,通过将更新的文档写入NoSQL存储)。