UndoRedoStack
κ°μ
UndoRedoStackμ μ€ν μ·¨μμ λ€μ μ€νμ νκΈ° μν΄ κ΅¬νν λμμΈ ν¨ν΄μ΄μμ.
λ€μν μννΈμ¨μ΄μμ κ°μμ λ°©λ²μΌλ‘ ꡬν λμ΄ μμ§λ§, μ λ μ‘°κΈ κ°λ¨νκ² νμν κΈ°λ₯λ§ κ΅¬ννμ¬ κ° κΈ°λ₯λ€μ μ‘μ (Action)μΌλ‘ λλμ΄ λ³΄μμ΄μ.
κ·Έλ¦¬κ³ κ° Actionμ λ¬Άμ ActionBlock ν΄λμ€λ₯Ό λ§λ€μ΄ Sequenceλ₯Ό ꡬννλλ‘ νμ΄μ.
μ΄λ₯Ό ν΅ν΄ 볡μ‘ν Undo λλ Redo μμ μ νλ²μ μ²λ¦¬ ν μ μμ΄μ.
IUndoableAction
public interface IUndoableAction
{
void Do();
void Undo();
}ActionBlock
public class ActionBlock : IUndoableAction
{
private readonly IUndoableAction[] actionSequence;
public ActionBlock(params IUndoableAction[] actionSequence)
{
this.actionSequence = actionSequence;
}
public void Do()
{
foreach (var action in actionSequence)
action.Do();
}
public void Undo()
{
foreach (var action in actionSequence.Reverse())
action.Undo();
}
public override string ToString()
{
return string.Join(",", actionSequence.Select(a => a.ToString()));
}
}UndoRedoStack
Reference.
Last updated