/ / c # príkaz vzor dizajn problém - c #, undo-redo, príkaz-vzor

c # príkaz návrhu vzorového vzoru - c #, undo-redo, command-pattern

Vážení,

Mám objektový model, ktorého členovia "(objekty)"Vlastnosti môžu byť zmenené pomocou PropertyGrid a UI (PopupMenu atď.). Hľadám podporu UndoRedo v tomto prípade a záujem design Command Pattern. Ako som pochopil, zmena akejkoľvek vlastnosti prostredníctvom PropertyGrid by mala byť zaregistrovaná v zásobníku UndoRedo, avšak vrátenie tejto operácie sa rovná zmene tejto vlastnosti na starú hodnotu - a Infinite Loop? Poznáte v tomto prípade nejaký najlepší postup?

Vďaka.

odpovede:

1 pre odpoveď č. 1

Predpokladám, že akcia Undo sa nemusí považovať za zmenu.

Máte zbierku zmien. Keď urobíte zmenu, pridáte položku do tejto kolekcie. Ak urobíte vrátenie späť, jednoducho prepnete aktuálny stav do stavu [i-1]. Ak urobíte opakovanie, prepnete aktuálny stav do stavu [i + 1]. Ak ste urobili niekoľko spätných príkazov a potom vykonáte zmenu, začnete písať odtiaľ a prepíšete všetky možné zmeny.