/// <summary> /// Load backup map /// BackupMap conteins all stored object name and their types of the backup. /// </summary> private void LoadBackupMap() { var objectDefinition = new ExtractEntry { EntryName = _mapEntryName, BackupObjectTypeName = typeof(ExtractEntry[]).AssemblyQualifiedName }; _extpactMap = GetFromBackup <ExtractEntry[]>(objectDefinition).ToList(); }
/// <summary> /// Get object from backup and deserialize one. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="objectDefinition"></param> /// <returns></returns> private T GetFromBackup <T>(ExtractEntry objectDefinition) where T : class { var entry = _zipArchive.Entries.FirstOrDefault(x => x.Name.Equals(objectDefinition.EntryName, StringComparison.InvariantCultureIgnoreCase)); using (var reader = entry.Open()) { var type = objectDefinition.BackupObjectType; // Prepare ignored properties var xmlOver = GetIgnoreProperties(objectDefinition); var serializer = new XmlSerializer(type, xmlOver); var serializedObject = serializer.Deserialize(reader); return(serializedObject as T); } }
/// <summary> /// Serialize xml file to object by given file name /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entryName"></param> /// <returns></returns> public T LoadObject <T>(string entryName) where T : class { ExtractEntry extractEntry = null; if (_extpactMap != null) { extractEntry = _extpactMap.FirstOrDefault(x => x.EntryName == entryName); } extractEntry = extractEntry ?? new ExtractEntry { EntryName = entryName, BackupObjectTypeName = typeof(T).AssemblyQualifiedName }; return(GetFromBackup <T>(extractEntry)); }