Пример #1
0
        /// <summary>
        /// Deseralizes the specified serialized data.
        /// </summary>
        /// <param name="serializedData">The serialized data.</param>
        /// <param name="settings">The settings.</param>
        /// <returns>True if any settings were applied.</returns>
        public static bool Deseralize(BinaryData serializedData, Settings settings)
        {
            if (serializedData.Left == 0)
            {
                return(false);
            }

            bool applied = false;

            try
            {
                Log.Debug(typeof(BinarySettings), "Deserialize", applySettings);

                // Data version.
                ulong version = serializedData.GetVersion();

                // Build version and stamp.
                Version assemblyVersion = serializedData.GetAssemblyVersion();
                long    ticks           = serializedData.GetLong();

                if (version > 0)
                {
                    try
                    {
                        Log.Warning(typeof(BinarySettings), "Deserialize", "Serialized data version too high", version, 0, assemblyVersion, new DateTime(ticks).ToString("yyyy-MM-dd HH:mm"));
                    }
                    catch
                    {
                        Log.Warning(typeof(BinarySettings), "Deserialize", "Serialized data version too high", version, 0);
                    }

                    return(applied);
                }

                try
                {
                    Log.DevDebug(typeof(BinarySettings), "Deserialize", version, assemblyVersion, new DateTime(ticks).ToString("yyyy-MM-dd HH:mm"));
                }
                catch
                { }

                // Blocks.
                while (DeserializeBlock(serializedData, settings) == DeserializationResult.Success)
                {
                    applied = applySettings;
                }
                ;

                if (applied && !settings.Loaded)
                {
                    settings.LoadSettingsPerCity = true;
                }
            }
            catch (Exception ex)
            {
                Log.Error(typeof(BinarySettings), "Deserialize", ex);
            }

            return(applied);
        }