> デリゲートに格納というのは、複数のメソッドを呼ぶデリゲート(マルチキャストデリゲート)のことですか?
> スタックはLinkedListとかListで実装してるのですか?
> 2段重ねとは?
delegate void UndoDelegate();
Stack<Stack<UndoDelegate>> undoBuffer;
みたいにして、
public void FooBar(long pos)
{
Stack<UndoDelegate> undo;
//何がしの処理
gehogeho();
undo.Push(delegate()
{
//アンドゥ処理
hogehoge();
}
//以下繰り返し
...
undoBuffer.Push(undo);
}
みたいな感じです。
リドゥのほうはまだやってません。
> 読解力がないせいでしょうか?
> ちょっと文章が明確でなくてよくわかりません。
いえいえ、わたしの書き方が悪かったですm(__)m
> Hirotowさんなら知ってるかと思いますが、
> マルチキャストデリゲートは呼び出し順は保証されてません。念のため。
よく知らないのでご教示いただけるとうれしいです。
> 普通にundo用スタック、redo用スタックの二つを使えばそれで十分かと思うんですが。
外部からの関数呼び出しを単位としてアンドゥしたいのです。
でもCommandパターンだと泥沼に嵌るのが目に見えてるので安直な方法でやってます。