public static void Override(ISerializeArray Data, ISerializeArray On) { var it = Data.GetEnumerator(); while (it.MoveNext()) { object value = it.Current; if (value is ISerializeObject) { Override((ISerializeObject)value, On.AddObject()); } else if (value is ISerializeArray) { Override((ISerializeArray)value, On.AddArray()); } else { if (On.Contains(value)) { continue; } On.Add(value); } } }
protected ISerializeArray BuildISerializeData(DataTable Table) { if (Table == null || Table.Rows.Count == 0) { return(null); } ISerializeArray arr = Creator.Create <ISerializeArray>(); for (int i = 0; i < Table.Rows.Count; ++i) { DataRow row = Table.Rows[i]; ISerializeObject obj = arr.AddObject(); for (int j = 0; j < Table.Columns.Count; ++j) { string colName = Table.Columns[j].ColumnName; object value = row[colName]; if (value == DBNull.Value) { value = null; } obj.Set(colName, value); } } return(arr); }
private static object Bind(ISerializeArray Array, Type Type) { Array arr = null; Type elementType = Type.GetElementType(); if (Type.Name.Contains(",")) // Multidimension { List <object> dimensions = new List <object>(); ISerializeData data = Array; while (true) { ISerializeArray arrTemp = (ISerializeArray)data; dimensions.Add((int)arrTemp.Count); if (arrTemp.Count == 0) { break; } data = arrTemp.Get <ISerializeArray>(0); if (data == null) { break; } if (!(data is ISerializeArray)) { break; } } arr = (Array)Activator.CreateInstance(Type, dimensions.ToArray()); int[] indices = new int[dimensions.Count]; Bind(Array, elementType, arr, indices, 0); } else // Jagged { arr = (Array)Activator.CreateInstance(Type, (int)Array.Count); for (uint i = 0; i < Array.Count; ++i) { arr.SetValue(Cast(Array.Get <object>(i), elementType), i); } } return(arr); }
public void Send(string Title, string Message, params string[] PlayerID) { if (PlayerID == null || PlayerID.Length == 0) { Send(Title, Message, new Segments[] { Segments.All }); return; } ISerializeObject messageObj = BuildMessage(Title, Message); ISerializeObject filter = messageObj.AddObject("filter"); ISerializeArray pushe_id = filter.AddArray("pushe_id"); pushe_id.AddRange(PlayerID); SendMessage(messageObj); }
private ISerializeObject BuildMessage(string Title, string Message) { ISerializeObject messageObj = Creator.Create <ISerializeObject>(); ISerializeArray applications = messageObj.AddArray("applications"); applications.Add(packageName); ISerializeObject notification = messageObj.AddObject("notification"); notification["content"] = Message; if (!string.IsNullOrEmpty(Title)) { notification["title"] = Title; } return(messageObj); }
private static void Bind(ISerializeArray Array, Type Type, Array Object, int[] Indices, int DimensionIndex) { for (uint i = 0; i < Array.Count; ++i) { if (DimensionIndex < Indices.Length - 1) { if (DimensionIndex < Indices.Length - 1) { Indices.Set(0, (uint)DimensionIndex + 1, (uint)(Indices.Length - (DimensionIndex + 1))); } Bind(Array.Get <ISerializeArray>(i), Type, Object, Indices, DimensionIndex + 1); } else { Object.SetValue(Cast(Array.Get <object>(i), Type), Indices); } ++Indices[DimensionIndex]; } }
private static ISerializeArray SerializeArray(object Instance) { object[] array = ((Array)Instance).ToJaggedArray(); ISerializeArray arr = Creator.Create <ISerializeArray>(); for (int i = 0; i < array.Length; ++i) { object value = array[i]; if (value == null) { arr.Add((object)null); } else { Type valueType = value.GetType(); if (valueType.IsArray) { arr.Add(SerializeArray(value)); } else if (valueType.IsPrimitive || valueType == typeof(string)) { arr.Add(value); } else if (valueType.IsEnum) { arr.Add(value.ToString()); } else { arr.Add(SerializeObject(value)); } } } return(arr); }