public IValueNudger CreateNudger(INotifyPropertyChanged container, string propertyName) { ValueNudgerFactory factory = CreateFactory(container, propertyName); var nudger = factory(); return(nudger); }
public override void Serialize(string name, ValueNudgerFactory factory) { var property = _type.GetProperty(name); var value = property.GetValue(_defaultSettings); property.SetValue(Settings, value); }
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) { }
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); } } }