/// <summary> /// Fires when Memento is changed. /// </summary> /// <param name="e">Event args containing Memento instance.</param> protected virtual void OnMementoChanged(MementoChangedEventArgs <T> e) { // Invoke event. MementoChanged?.Invoke(this, e); // Output log message with changed Memento. Logging.LineSeparator("MEMENTO CHANGED"); Logging.Log(e.Memento.ToString()); }
/// <summary> /// Set current state based on passed Memento.State property. /// </summary> /// <param name="memento">Memento from which to get State property.</param> public void SetMemento(Memento <T> memento) { _state = memento.State; //// Invoke event handler. MementoChanged?.Invoke(this, new MementoChangedEventArgs <T> { Memento = memento, }); }
/// <summary> /// Creates a new Memento instance using _state. /// </summary> /// <returns>Newly generated Memento instance.</returns> public Memento <T> CreateMemento() { // Create memento and set state to current state. var memento = new Memento <T>(_state); //// Invoke event handler. MementoChanged?.Invoke(this, new MementoChangedEventArgs <T> { Memento = memento, }); return(memento); }
public void Save(TMemento memento) { if (currentSheet == null) { mementoList.AddFirst(memento); currentSheet = mementoList.First; MementoChanged?.Invoke(this, currentSheet.Value); } else if (!memento.Equals(currentSheet.Value)) { currentSheet = currentSheet.ReplaceNext(memento); MementoChanged?.Invoke(this, currentSheet.Value); } }