Inheritance: ISetting
 public void RestoreFromMemento(ISettingsMemento memento)
 {
     _settings.Clear();
     foreach (ISetting setting in memento.Settings)
     {
         ISetting newSetting = new Setting() { Name = setting.Name };
         if (setting.Encrypt & !String.IsNullOrEmpty(setting.Value))
             newSetting.Value = DecryptFromBase64(setting.Value);
         else
             newSetting.Value = setting.Value;
         _settings.Add(newSetting);
     }//end foreach
 }
        public ISettingsMemento GetMemento()
        {
            List<ISetting> encryptedSettings = new List<ISetting>(_settings.Count);
            foreach (ISetting setting in _settings)
            {
                ISetting newSetting = new Setting() { Name = setting.Name, Encrypt = setting.Encrypt };
                if (setting.Encrypt && !String.IsNullOrEmpty(setting.Value))
                    newSetting.Value = EncryptAsBase64(setting.Value);
                else
                    newSetting.Value = setting.Value;
                encryptedSettings.Add(newSetting);
            }//end foreach

            return new XMLSettingsMemento(encryptedSettings);
        }