static void Main(string[] args) { Console.WriteLine("Memento pattern demo..."); List <IMemento <SurveyState> > surveySnapshot = new List <IMemento <SurveyState> >(); //Caretaker var survey = new Survey() { Name = "test" }; survey.AddAnswer(1, "I like c#"); survey.AddAnswer(2, "Yes"); Console.WriteLine(survey); Console.WriteLine("---"); surveySnapshot.Add(survey.CreateSnapshot()); survey.AddAnswer(3, "No"); Console.WriteLine(survey); Console.WriteLine("---"); survey.RestoreSnapshot(surveySnapshot.Last()); Console.WriteLine(survey); Console.WriteLine("---"); }