public IFaceDatabase <T> Open() { var dialog = new OpenFileDialog { InitialDirectory = SerializeFile == null ? _defaultSerializePath : Path.GetDirectoryName(SerializeFile), DefaultExt = "xml", Filter = FileFilter, Title = "Select file containing saved face database" }; var result = dialog.STAShowDialog(); // make a backup of the current database in case something goes wrong var backup = FaceDatabase.Backup(); if (result == DialogResult.OK) { try { using (var fs = dialog.OpenFile()) { FaceDatabase.Deserialize(fs); } } catch (Exception exc) { MessageBox.Show( $"Error: An error occured while loading the database from {dialog.FileName}: {Environment.NewLine}{exc}"); // something went wrong -> revert FaceDatabase.Restore(backup); } } SerializeFile = dialog.FileName; return(FaceDatabase); }