Пример #1
0
        /// <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();
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        /// <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));
        }