我们有一组域对象,可以在一个窗口中进行编辑,并在其他窗口中同时使用。确保对象始终处于有效状态,并且更改在提交之前对外界是不可见的。对象存储在存储库中(每个对象都有唯一的ID)。
我可以想到一些解决方案,但是我对其中任何一个都不满意:
请注意,只有一个并发编辑器,但是可能有多个并发“阅读器”。同样,并发也不会成为问题(从某种意义上说,在多线程环境中部分更新对象)。
在提交更改之前,如何在不应用更改的情况下实现用于编辑域对象的模式?有什么我应该研究的框架吗?
最佳答案
我认为Command pattern可能会对您有所帮助。
基本上,您将实现“编辑”窗口以不直接在对象上工作,而是创建根据UI中的数据更改对象的命令。单击“应用”后,您将在对象上执行这些命令,将其置于用户选择的状态。
另一种方法是给“编辑”和“运行”窗口各一个自己的实例,并在用户单击“应用”后“某种程度上”同步“运行”窗口中的对象。但是,我不确定在不引入大量耦合的情况下如何实现此目的。
第三种方法是我将执行的方法:
使用MVVM时,编辑窗口和运行窗口都有自己的ViewModel实例。 ViewModel可以包含域对象的实例。两个ViewModel都将实例保存到域对象的相同实例。
现在,可以通过以下方式实现ViewModel:
关于c# - 在使用时对域对象进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525193/