/// <summary> /// Writes the property. /// </summary> /// <param name="name">The property name.</param> /// <param name="type">The property type.</param> /// <param name="value">The property value.</param> private void WriteProperty(string name, Type type, object value) { this.writer.WriteStartElement(PropertyElement); this.writer.WriteAttributeString(NameAttribute, name); this.writer.WriteAttributeString(TypeAttribute, type.AssemblyQualifiedName); if (value == null) { this.writer.WriteAttributeString(IsNullAttribute, TrueValue); } else { this.writer.WriteAttributeString(IsNullAttribute, FalseValue); if (value is Font) { FontSerailizer.WriteType(value, this.writer); } else if (value is Point) { PointSerializer.WriteType(value, this.writer); } else if (value is Size) { SizeSerializer.WriteType(value, this.writer); } else if (value is Color) { ColorSerializer.WriteType(value, this.writer); } else if (value is RecentFiles) { RecentFiles.WriteType(value, this.writer); } else { this.writer.WriteAttributeString(SeralizeAsAttribute, SeralizeAs.Default.ToString()); this.writer.WriteValue(value); } } this.writer.WriteEndElement(); // Property }
/// <summary> /// Reads the property value. /// </summary> /// <returns>The property value.</returns> private object ReadPropertyValue() { SeralizeAs serializeAs = (SeralizeAs)Enum.Parse(typeof(SeralizeAs), this.reader.GetAttribute(SeralizeAsAttribute)); if (serializeAs == SeralizeAs.Font) { return(FontSerailizer.ReadType(this.reader)); } else if (serializeAs == SeralizeAs.Point) { return(PointSerializer.ReadType(this.reader)); } else if (serializeAs == SeralizeAs.Size) { return(SizeSerializer.ReadType(this.reader)); } else if (serializeAs == SeralizeAs.Color) { return(ColorSerializer.ReadType(this.reader)); } else if (serializeAs == SeralizeAs.RecentFiles) { return(RecentFiles.ReadType(this.reader)); } else { // SeralizeAs.Default Type type = Type.GetType(this.reader.GetAttribute(TypeAttribute)); if (type.IsEnum) { return(Enum.Parse(type, this.reader.ReadString())); } else if (type == typeof(string)) { return(this.reader.ReadString()); } else { return(Convert.ChangeType(this.reader.ReadString(), type, CultureInfo.CurrentCulture)); } } }