c#命令模式设计问题

c# command pattern design issue

亲爱的,

我有一个对象模型,其成员(对象)的属性可以通过 PropertyGrid 和 UI(PopupMenu 等)更改。我正在寻找在这种情况下支持 UndoRedo 和感兴趣的命令模式设计。据我了解,通过 PropertyGrid 更改任何 属性 应该在 UndoRedo 堆栈中注册,但是,撤消此操作等于将 属性 更改为旧值 - 和无限循环?您知道这种情况下的最佳做法吗?

谢谢。

我想撤消操作不必算作更改。

您有一组更改。当您进行更改时,您会在此集合中添加一个项目。如果您进行撤消,您只需将当前状态与 [i-1] 状态交换即可。如果重做,则将当前状态与 [i+1] 状态交换。如果您已经进行了一些撤消,然后进行了更改,您就可以从那里开始编写并重写所有可能的重做。