= this.CurrentLayer; Block removedBlock; this.AddCommand(new Command( () => { // Do layer.RemoveBlock(block); // レイヤーから一旦削除 block.position += moveOffset; // ブロックの位置を移動する removedBlock = layer.AddBlock(block); // 移動したブロックを追加。上書きしたブロックを保持しておく }, () => { // Undo layer.RemoveBlock(block); // レイヤーから一旦削除 block.position -= moveOffset; // ブロックの位置を戻す layer.AddBlock(block); // ブロックを戻す layer.AddBlock(removedBlock); // 上書きしたブロックを戻す })); }