// Metodo che ripristina le opzioni selezionate in precedenza internal void RestoreState(IMemento memento) { if (memento != null) { try { // si converte il memento nel tipo opportuno per poi acquisirne lo stato memorizzato SettingsMemento settingsMemento = (SettingsMemento)memento; int[] settingsOptions = settingsMemento.GetState(); // si seleziona l'opportuno elemento nelle caselle combinate MinefieldComboBox.SelectedIndex = settingsOptions[0]; ModalityComboBox.SelectedIndex = settingsOptions[1]; DifficultyComboBox.SelectedIndex = settingsOptions[2]; // si impostano i valori dei controlli di scorrimento MinefieldLength.Value = settingsOptions[3]; MinefieldHeight.Value = settingsOptions[4]; MinefieldMines.Value = settingsOptions[5]; } catch { // in caso di errore viene selezionato il primo elemento delle caselle combinate MinefieldComboBox.SelectedIndex = 0; ModalityComboBox.SelectedIndex = 0; DifficultyComboBox.SelectedIndex = 0; } } }
// Metodo che determina se l'oggetto specificato è uguale all'oggetto corrente public override bool Equals(object obj) { if (obj != null) { try { // si converte esplicitamente l'oggetto specificato nel tipo opportuno e se i due // oggetti hanno il medesimo hash code allora si comunica che gli oggetti sono uguali SettingsMemento memento = (SettingsMemento)obj; if (GetHashCode() == memento.GetHashCode()) { return(true); } } catch { } } // si comunica che gli oggetti sono diversi return(false); }