/// <summary> /// Composes the value. /// </summary> /// <param name="itemValue"> /// The item value. /// </param> /// <param name="writer"> /// The writer. /// </param> /// <exception cref="System.ArgumentException"> /// Unsupported /// </exception> private static void ComposeValue(PListValue itemValue, XmlWriter writer) { switch (itemValue.PropertyType) { case "string": case "integer": case "real": writer.WriteElementString(itemValue.PropertyType, itemValue.Value.ToString()); break; case "true": case "false": writer.WriteElementString(itemValue.PropertyType, string.Empty); break; case "dict": ComposeDictionary(itemValue.Value, writer); break; case "array": ComposeArray(itemValue.Value as List <PListValue>, writer); break; default: throw new ArgumentException("Unsupported"); } }
/// <summary> /// Parses the value. /// </summary> /// <param name="val"> /// The value. /// </param> /// <returns> /// The <see cref="PListValue"/>. /// </returns> /// <exception cref="System.ArgumentException"> /// Unsupported /// </exception> private static PListValue ParseValue(XElement val) { var itemValue = new PListValue { PropertyType = val.Name.ToString() }; switch (itemValue.PropertyType) { case "string": itemValue.Value = val.Value; break; case "integer": itemValue.Value = int.Parse(val.Value); break; case "real": itemValue.Value = float.Parse(val.Value); break; case "true": itemValue.Value = true; break; case "false": itemValue.Value = false; break; case "dict": var plist = new PList(); Parse(plist, val.Elements()); itemValue.Value = plist; break; case "array": var list = ParseArray(val.Elements()); itemValue.Value = list; break; default: throw new ArgumentException("Unsupported"); } return(itemValue); }