コード例 #1
0
        /// <summary>
        /// Sets the roaming config file path.
        /// </summary>
        /// <param name="filePath">The file path. </param>
        public void SetRoamingConfigFilePath(string filePath)
        {
            Argument.IsNotNullOrEmpty(nameof(filePath), filePath);

            _roamingConfigFilePath = filePath;

            try
            {
                if (File.Exists(_roamingConfigFilePath))
                {
                    using (var fileStream = new FileStream(_roamingConfigFilePath, FileMode.Open))
                    {
                        _roamingConfiguration = SavableModelBase <DynamicConfiguration> .Load(fileStream, _serializer);
                    }
                }
                else
                {
                    _roamingConfiguration?.SaveAsXml(_roamingConfigFilePath);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Failed to load roaming configuration, using default settings");

                _roamingConfigFilePath = GetConfigurationFileName(IO.ApplicationDataTarget.UserRoaming);
            }

            if (_roamingConfiguration is null)
            {
                _roamingConfiguration = new DynamicConfiguration();
            }
        }
コード例 #2
0
        public void CorrectlySerializesComplexObjects()
        {
            var dynamicConfiguration = new DynamicConfiguration();

            var complexSetting = new ComplexSetting
            {
                FirstName  = "Geert",
                MiddleName = "van",
                LastName   = "Horrik"
            };

            dynamicConfiguration.SetConfigurationValue("ComplexSetting", complexSetting);

            using (var memoryStream = new MemoryStream())
            {
                dynamicConfiguration.SaveAsXml(memoryStream);

                memoryStream.Position = 0L;

                var newDynamicConfiguration = SavableModelBase <DynamicConfiguration> .Load(memoryStream, SerializationFactory.GetXmlSerializer());

                var newComplexSetting = newDynamicConfiguration.GetConfigurationValue <ComplexSetting>("ComplexSetting", null);

                Assert.AreEqual(newComplexSetting.FirstName, complexSetting.FirstName);
                Assert.AreEqual(newComplexSetting.MiddleName, complexSetting.MiddleName);
                Assert.AreEqual(newComplexSetting.LastName, complexSetting.LastName);
            }
        }
コード例 #3
0
        /// <summary>
        /// Sets the roaming config file path.
        /// </summary>
        /// <param name="filePath">The file path. </param>
        public void SetLocalConfigFilePath(string filePath)
        {
            Argument.IsNotNullOrEmpty(nameof(filePath), filePath);

            _localConfigFilePath = filePath;

            try
            {
                if (File.Exists(_localConfigFilePath))
                {
                    using (var fileStream = new FileStream(_localConfigFilePath, FileMode.Open))
                    {
                        _localConfiguration = SavableModelBase <DynamicConfiguration> .Load(fileStream, _serializer);
                    }
                }
                else
                {
                    _localConfiguration?.SaveAsXml(_localConfigFilePath);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Failed to load local configuration, using default settings");

                _localConfigFilePath = DefaultLocalConfigFilePath;
            }

            if (_localConfiguration == null)
            {
                _localConfiguration = new DynamicConfiguration();
            }
        }
コード例 #4
0
ファイル: ConfigurationService.cs プロジェクト: xubinvc/Catel
        /// <summary>
        /// Initializes a new instance of the <see cref="ConfigurationService" /> class.
        /// </summary>
        /// <param name="serializationManager">The serialization manager.</param>
        /// <param name="objectConverterService">The object converter service.</param>
        /// <param name="serializer">The serializer.</param>
        public ConfigurationService(ISerializationManager serializationManager,
                                    IObjectConverterService objectConverterService, ISerializer serializer)
        {
            Argument.IsNotNull("serializationManager", serializationManager);
            Argument.IsNotNull("objectConverterService", objectConverterService);
            Argument.IsNotNull("serializer", serializer);

            _serializationManager   = serializationManager;
            _objectConverterService = objectConverterService;
            _serializer             = serializer;

#if NET || NETSTANDARD
            _localConfigFilePath = Path.Combine(Path.GetApplicationDataDirectory(Catel.IO.ApplicationDataTarget.UserLocal), "configuration.xml");

            try
            {
                if (File.Exists(_localConfigFilePath))
                {
                    using (var fileStream = new FileStream(_localConfigFilePath, FileMode.Open))
                    {
                        _localConfiguration = SavableModelBase <DynamicConfiguration> .Load(fileStream, _serializer);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Failed to load local configuration, using default settings");
            }

            if (_localConfiguration == null)
            {
                _localConfiguration = new DynamicConfiguration();
            }

            _roamingConfigFilePath = Path.Combine(Path.GetApplicationDataDirectory(Catel.IO.ApplicationDataTarget.UserRoaming), "configuration.xml");

            try
            {
                if (File.Exists(_roamingConfigFilePath))
                {
                    using (var fileStream = new FileStream(_roamingConfigFilePath, FileMode.Open))
                    {
                        _roamingConfiguration = SavableModelBase <DynamicConfiguration> .Load(fileStream, _serializer);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Failed to load roaming configuration, using default settings");
            }

            if (_roamingConfiguration == null)
            {
                _roamingConfiguration = new DynamicConfiguration();
            }
#endif
        }
コード例 #5
0
        /// <summary>
        /// Serializes and deserializes an object using the specified mode. Finally, it will check whether the original object is equal.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="testObject">The test object.</param>
        /// <param name="mode">The mode.</param>
        /// <param name="enableRedirects">if set to <c>true</c>, redirects are enabled for binary serialization</param>
        /// <returns>The deserialized object.</returns>
        public static T SerializeAndDeserializeObject <T>(T testObject, SerializationMode mode, bool enableRedirects = false)
            where T : SavableModelBase <T>
        {
            using (var memoryStream = new MemoryStream())
            {
                testObject.Save(memoryStream, mode);

                memoryStream.Position = 0L;

                return(SavableModelBase <T> .Load(memoryStream, mode, enableRedirects));
            }
        }
コード例 #6
0
        public void TestParentAndChildRelationsWhenBinaryDeserializing()
        {
            var parent = new Parent("Parent");
            var child  = parent.CreateChild("Child");

            Assert.AreEqual(((IParent)child).Parent, parent);

            var file = _filesHelper.GetTempFile();

            parent.Save(file);
#if SILVERLIGHT
            file.Position = 0L;
#endif
            var loadedParent = SavableModelBase <Parent> .Load(file);

            Assert.AreEqual(parent, ((IParent)loadedParent.Children[0]).Parent);
        }
コード例 #7
0
        public void KnowsWhatPropertiesAreSetUsingDeserialization()
        {
            using (var memoryStream = new MemoryStream())
            {
                using (var streamWriter = new StreamWriter(memoryStream))
                {
                    streamWriter.Write(ExpectedXml);
                    streamWriter.Flush();

                    memoryStream.Position = 0L;

                    var configuration = SavableModelBase <DynamicConfiguration> .Load(memoryStream, SerializationFactory.GetXmlSerializer());

                    Assert.IsTrue(configuration.IsConfigurationValueSet("KeyX"));
                    Assert.IsTrue(configuration.IsConfigurationValueSet("KeyY"));
                    Assert.IsFalse(configuration.IsConfigurationValueSet("C"));
                }
            }
        }
コード例 #8
0
 // SNIP!
 public static new T Load(Stream stream, SerializationMode mode)
 {
     Argument.IsNotNull(() => stream);
     if (mode == SerializationMode.Xml)
     {
         using (XmlReader xr = XmlReader.Create(stream))
         {
             xr.MoveToContent();
             string rootName = xr.LocalName;
             if (string.Compare(rootName, typeof(T).Name, StringComparison.OrdinalIgnoreCase) != 0)
             {
                 throw new InvalidDataException(string.Format(CultureInfo.CurrentCulture, "Expecting data from Model [{0}], but found Model [{1}] instead.", typeof(T).Name, rootName));
             }
             // Reset to read from the top.
             stream.Seek(0, SeekOrigin.Begin);
         }
     }
     return(SavableModelBase <T> .Load <T>(stream, mode));
 }
コード例 #9
0
        public void TestParentAndChildRelationsWhenXmlDeserializing()
        {
            var parent = new Parent("Parent");
            var child  = parent.CreateChild("Child");

            Assert.AreEqual(((IParent)child).Parent, parent);

            Parent loadedParent;

            using (var memoryStream = new MemoryStream())
            {
                parent.Save(memoryStream, SerializationMode.Xml);

                memoryStream.Position = 0L;

                loadedParent = SavableModelBase <Parent> .Load(memoryStream, SerializationMode.Xml);
            }

            Assert.AreEqual(parent, ((IParent)loadedParent.Children[0]).Parent);
        }
コード例 #10
0
        public static ProgressionTree LoadFromFile(Catel.Runtime.Serialization.Xml.XmlSerializer seri, FileStream stream)
        {
            ProgressionTree tree = new ProgressionTree();

            try
            {
                stream.Position = 0;

                seri.Warmup(new List <Type>()
                {
                    typeof(TreeEntry), typeof(ProgressionEntry), typeof(ProgressionTree)
                });
                tree = SavableModelBase <ProgressionTree> .Load(stream, seri);
            } catch (SerializationException ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(tree);
            // return seri.Deserialize<ProgressionTree>(stream);
        }
コード例 #11
0
        public void RegistersPropertiesFromSerialization()
        {
            using (var memoryStream = new MemoryStream())
            {
                using (var streamWriter = new StreamWriter(memoryStream))
                {
                    streamWriter.Write(ExpectedXml);
                    streamWriter.Flush();

                    memoryStream.Position = 0L;

                    var configuration = SavableModelBase <DynamicConfiguration> .Load(memoryStream, SerializationFactory.GetXmlSerializer());

                    Assert.IsTrue(configuration.IsConfigurationValueSet("KeyX"));
                    Assert.IsTrue(configuration.IsConfigurationValueSet("KeyY"));

                    Assert.AreEqual("Value X", configuration.GetConfigurationValue("KeyX"));
                    Assert.AreEqual("Value Y", configuration.GetConfigurationValue("KeyY"));
                }
            }
        }