コード例 #1
0
        public IActionResult ProcessForm(List <int> question, List <string> answer, string submit, string save, string restore)
        {
            SurveyState state = new SurveyState();

            state.Questions = question;
            state.Answers   = answer;
            Survey survey = new Survey(state);

            if (submit != null)
            {
                Caretaker.Snapshot = null;
                survey.Submit();
                ViewBag.Message = "Survey data submitted!";
            }
            if (save != null)
            {
                Caretaker.Snapshot = survey.CreateSnapshot();
                ViewBag.Message    = "Snapshot created!";
            }

            if (restore != null)
            {
                survey.RestoreSnapshot(Caretaker.Snapshot);
                ViewBag.Message = "Survey restored!";
            }

            ViewBag.Answers = survey.GetAnswers();

            using (AppDbContext db = new AppDbContext())
            {
                List <Question> model = db.Questions.ToList();
                return(View("Index", model));
            }
        }
コード例 #2
0
        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("---");
        }