示例#1
0
        /// <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());
        }
示例#2
0
        /// <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,
            });
        }
示例#3
0
        /// <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);
            }
        }