using System; namespace RosettaUI.UndoSystem { /// /// 値の変更を記録するUndoRecord向けのユーティリティクラス /// public class ValueChangeRecord { public TValue BeforeRaw { get; set; } public TValue AfterRaw { get; set; } public TValue Before => UndoHelper.Clone(BeforeRaw); public TValue After => UndoHelper.Clone(AfterRaw); public void Initialize(TValue before, TValue after) { BeforeRaw = UndoHelper.Clone(before); AfterRaw = UndoHelper.Clone(after); } public void Clear() { if (BeforeRaw is IDisposable d0) d0.Dispose(); if (AfterRaw is IDisposable d1) d1.Dispose(); BeforeRaw = default; AfterRaw = default; } public override string ToString() => $"{BeforeRaw} -> {AfterRaw}"; } }