Exemple #1
0
 private static void compose(object value, XmlWriter writer)
 {
     if (value == null || value is string)
     {
         writer.WriteElementString("string", value as string);
         return;
     }
     if (value is int || value is long)
     {
         int num = (int)value;
         writer.WriteElementString("integer", num.ToString(NumberFormatInfo.InvariantInfo));
         return;
     }
     if (value is Dictionary <string, object> || value.GetType().ToString().StartsWith("System.Collections.Generic.Dictionary`2[System.String"))
     {
         Dictionary <string, object> strs = value as Dictionary <string, object>;
         if (strs == null)
         {
             strs = new Dictionary <string, object>();
             IDictionary dictionaries = (IDictionary)value;
             foreach (object key in dictionaries.Keys)
             {
                 strs.Add(key.ToString(), dictionaries[key]);
             }
         }
         Plist.writeDictionaryValues(strs, writer);
         return;
     }
     if (value is List <object> )
     {
         Plist.composeArray((List <object>)value, writer);
         return;
     }
     if (value is byte[])
     {
         writer.WriteElementString("data", Convert.ToBase64String((byte[])value));
         return;
     }
     if (value is float || value is double)
     {
         double num1 = (double)value;
         writer.WriteElementString("real", num1.ToString(NumberFormatInfo.InvariantInfo));
         return;
     }
     if (value is DateTime)
     {
         writer.WriteElementString("date", XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.Utc));
         return;
     }
     if (!(value is bool))
     {
         throw new Exception(string.Format("Value type '{0}' is unhandled", value.GetType().ToString()));
     }
     writer.WriteElementString(value.ToString().ToLower(), "");
 }