Example #1
0
        public IValueNudger CreateNudger(INotifyPropertyChanged container, string propertyName)
        {
            ValueNudgerFactory factory = CreateFactory(container, propertyName);
            var nudger = factory();

            return(nudger);
        }
Example #2
0
        public override void Serialize(string name, ValueNudgerFactory factory)
        {
            var property = _type.GetProperty(name);
            var value    = property.GetValue(_defaultSettings);

            property.SetValue(Settings, value);
        }
Example #3
0
        public override void Serialize(string name, ValueNudgerFactory factory)
        {
            var value       = GetPropertyValue(name);
            var valueString = value.ToString();

            _element.SetAttribute(name, valueString);
        }
        public override void Serialize(string name, ValueNudgerFactory factory)
        {
            if (factory != null && name == _targetName)
            {
                Debug.Assert(Nudger == null, "Should not have found a previous match");

                Nudger = factory();

                Debug.Assert(Nudger != null, "Should now have a match");
            }
        }
 /// <summary>
 /// Basic CLR property/XML attribute serialization.
 /// </summary>
 /// <param name="name">Name of property and XML attribute.</param>
 /// <param name="factory">Factory for creating value nudger.</param>
 ///
 public abstract void Serialize(string name, ValueNudgerFactory factory);
 public override void Serialize(string name, ValueNudgerFactory factory)
 {
 }
Example #7
0
        public override void Serialize(string name, ValueNudgerFactory factory)
        {
            var property  = GetProperty(name);
            var attribute = _element.Attributes[name]?.Value;

            if (attribute == null)
            {
                var elements = _element.GetElementsByTagName(name);
                if (elements.Count != 0)
                {
                    attribute = elements[0].InnerText;

                    while (elements.Count != 0)
                    {
                        _element.RemoveChild(elements[0]);
                    }
                }
            }

            if (attribute != null)
            {
                object value;

                try
                {
                    var propertyType = property.PropertyType;
                    if (propertyType.IsAssignableFrom(typeof(string)))
                    {
                        value = attribute;
                    }
                    else if (propertyType.IsAssignableFrom(typeof(int)))
                    {
                        value = int.Parse(attribute);
                    }
                    else if (propertyType.IsAssignableFrom(typeof(double)))
                    {
                        value = double.Parse(attribute);
                    }
                    else if (propertyType.IsAssignableFrom(typeof(float)))
                    {
                        value = float.Parse(attribute);
                    }
                    else if (propertyType.IsAssignableFrom(typeof(bool)))
                    {
                        value = bool.Parse(attribute);
                    }
                    else if (propertyType.IsEnum)
                    {
                        value = Enum.Parse(propertyType, attribute);
                    }
                    else
                    {
                        value = new NotImplementedException("Property type not implemented");
                    }
                }
                catch
                {
                    // Value didn't parse, stick with default value.
                    value = null;
                }

                if (value != null)
                {
                    SettingsSerializer.SetProperty(property, Settings, value);
                }
            }
        }