public static void WriteGResult(this ObjectWriter writer, Result value, Type type) { writer.WriteTag(FormatterTag.GResult); writer.InnerWrite(value._Status); writer.WriteStringOrReference(value._Message); writer.InnerWrite(type.GetGenericArguments()[0]); writer.Serialize(value.GetValue()); }
private static void WriteSimpleArray(this ObjectWriter writer, Array value) { writer.WriteTag(FormatterTag.Array); var elementType = value.GetType().GetElementType(); writer.InnerWrite(elementType); writer.InnerWrite(value); }
public static void WriteTypeArray(this ObjectWriter writer, Type[] value) { writer.WriteTag(FormatterTag.TypeArray); writer.InnerWrite(value.Length); foreach (var v in value) { writer.InnerWrite(v); } }
public static void WriteDecimalArray(this ObjectWriter writer, Decimal[] value) { writer.WriteTag(FormatterTag.DecimalArray); writer.InnerWrite(value.Length); foreach (var item in value) { writer.InnerWrite(item); } }
public static void WriteGList(this ObjectWriter writer, IList value, Type type) { writer.WriteTag(FormatterTag.GList); writer.InnerWrite(type.GetGenericArguments()[0]); writer.InnerWrite(value.Count); foreach (var item in value) { writer.Serialize(item); } }
private static void WriteGDictionary(ObjectWriter writer, FormatterTag tag, IDictionary value, Type type) { writer.WriteTag(tag); var genericArguments = type.GetGenericArguments(); writer.InnerWrite(genericArguments[0]); writer.InnerWrite(genericArguments[1]); writer.InnerWrite(value.Count); foreach (DictionaryEntry item in value) { writer.Serialize(item.Key); writer.Serialize(item.Value); } }
private static void WriteMultiRankArray(this ObjectWriter writer, Array value) { writer.WriteTag(FormatterTag.MultiRankArray); var elementType = value.GetType().GetElementType(); writer.InnerWrite(elementType); int rank = value.Rank; //- 写入维数 writer.InnerWrite(rank); int i, j; int[,] des = new int[rank, 2]; int[] loc = new int[rank]; //- 写入维数长度 for (i = 0; i < rank; i++) { writer.InnerWrite(value.GetLength(i)); } //- 写入元素 //- 设置每一个 数组维 的上下标。 for (i = 0; i < rank; i++) { j = value.GetLowerBound(i); //- 上标 des[i, 0] = j; des[i, 1] = value.GetUpperBound(i); //- 下标 loc[i] = j; } i = rank - 1; while (loc[0] <= des[0, 1]) { writer.Serialize(value.GetValue(loc)); loc[i]++; for (j = rank - 1; j > 0; j--) { if (loc[j] > des[j, 1]) { loc[j] = des[j, 0]; loc[j - 1]++; } } } }
//static readonly System.Collections.Concurrent.ConcurrentDictionary<Type, ICustomSerializable> // CustomSerializables = new System.Collections.Concurrent.ConcurrentDictionary<Type, ICustomSerializable>(); public static void WriteCustom(this ObjectWriter writer, object value, Type formatterType) { var customFormatter = Activator.CreateInstance(formatterType, true) as ICustomSerializable; writer.WriteTag(FormatterTag.Custom); writer.InnerWrite(formatterType); customFormatter.Serialize(writer, value); }
public static void WriteCharArray(this ObjectWriter writer, Char[] value) { writer.WriteTag(FormatterTag.CharArray); var bytes = writer.Encoding.GetBytes(value); writer.InnerWrite(bytes.Length); writer.Stream.WriteBytes(bytes); }
public static void InnerWrite(this ObjectWriter writer, Array array) { writer.InnerWrite(array.Length); foreach (var item in array) { writer.Serialize(item); } }
public static void WriteBooleanArray(this ObjectWriter writer, Boolean[] value) { writer.WriteTag(FormatterTag.BooleanArray); writer.InnerWrite(value.Length); foreach (var v in value) { writer.Stream.WriteByte((v ? (byte)1 : (byte)0)); } }
public static void WriteGuidArray(this ObjectWriter writer, Guid[] value) { writer.WriteTag(FormatterTag.GuidArray); writer.InnerWrite(value.Length); foreach (var v in value) { writer.Stream.WriteBytes(v.ToByteArray()); } }
public static void WriteStringArray(this ObjectWriter writer, String[] value) { writer.WriteTag(FormatterTag.StringArray); writer.InnerWrite(value.Length); foreach (var item in value) { writer.WriteStringOrReference(item); } }
public static void WriteString(this ObjectWriter writer, String value) { writer.WriteTag(FormatterTag.String); if (value == null) { writer.InnerWrite(-1); } else if (value.Length == 0) { writer.InnerWrite(0); } else { var bytes = writer.Encoding.GetBytes(value); writer.InnerWrite(bytes.Length); writer.Stream.WriteBytes(bytes); } }
public static void WriteSByteArray(this ObjectWriter writer, SByte[] value) { writer.WriteTag(FormatterTag.SByteArray); writer.InnerWrite(value.Length); foreach (var item in value) { writer.Stream.WriteByte((Byte)item); } }
public static void WriteDoubleArray(this ObjectWriter writer, Double[] value) { writer.WriteTag(FormatterTag.DoubleArray); writer.InnerWrite(value.Length); foreach (var item in value) { writer.Stream.WriteBytes(BitConverter.GetBytes(item)); } }
public void Serialize(ObjectWriter writer, object value) { var items = value as SessionStateItemCollection; writer.InnerWrite(items.Count); foreach(string name in items.Keys) { writer.Serialize(name); writer.Serialize(items[name]); } }
public static void WriteByteArray(this ObjectWriter writer, Byte[] value) { writer.WriteTag(FormatterTag.ByteArray); writer.InnerWrite(value.Length); writer.Stream.WriteBytes(value); //foreach(var item in value) //{ // writer.Stream.WriteByte(item); //} }
public static void WriteTimeSpanArray(this ObjectWriter writer, TimeSpan[] value) { writer.WriteTag(FormatterTag.TimeSpanArray); writer.InnerWrite(value.Length); foreach (var v in value) { writer.Stream.WriteBytes(BitConverter.GetBytes(v.Ticks)); } }
public static void WriteDateTimeArray(this ObjectWriter writer, DateTime[] value) { writer.WriteTag(FormatterTag.DateTimeArray); writer.InnerWrite(value.Length); foreach (var v in value) { writer.Stream.WriteBytes(BitConverter.GetBytes(v.ToBinary())); } }
public static void InnerWriteObject(this ObjectWriter writer, object value, Type type, FormatterTag tagType) { writer.WriteTag(tagType); writer.InnerWrite(type); SerializableFieldInfo[] fields = SerializationHelper.GetSerializableMembers(type); foreach (var field in fields) { writer.Serialize(field.GetValue(value), field.Field); } }
public static void WriteHybridDictionary(this ObjectWriter writer, HybridDictionary value) { writer.WriteTag(FormatterTag.HybridDictionary); writer.InnerWrite(value.Count); var caseInsensitive = (bool)GetCaseInsensitive(value); writer.Stream.WriteByte((caseInsensitive ? (byte)1 : (byte)0)); foreach (DictionaryEntry item in value) { writer.Serialize(item.Key); writer.Serialize(item.Value); } }
public static void WriteStringBuilderArray(this ObjectWriter writer, StringBuilder[] value) { writer.WriteTag(FormatterTag.StringBuilderArray); writer.InnerWrite(value.Length); foreach (var v in value) { if (v == null) { writer.WriteNull(); } else { writer.WriteStringOrReference(v.ToString()); } } }
public static bool TryWriteReference(this ObjectWriter writer, object value) { if (value == null) { return(false); } var index = writer.ReferenceContainer.IndexOf(value); if (index < 0) { writer.ReferenceContainer.Add(value); return(false); } writer.WriteTag(FormatterTag.Reference); writer.InnerWrite(index); return(true); }
public static void WriteChar(this ObjectWriter writer, Char value) { writer.InnerWrite(FormatterTag.Char, BitConverter.GetBytes(value)); }
public static void WriteGuid(this ObjectWriter writer, Guid value) { writer.InnerWrite(FormatterTag.Guid, value.ToByteArray()); }
public static void WriteType(this ObjectWriter writer, Type value) { writer.WriteTag(FormatterTag.Type); writer.InnerWrite(value); }
public static void WriteInt32(this ObjectWriter writer, Int32 value) { writer.WriteTag(FormatterTag.Int32); writer.InnerWrite(value); }
public static void WriteTimeSpan(this ObjectWriter writer, TimeSpan value) { writer.InnerWrite(FormatterTag.TimeSpan, BitConverter.GetBytes(value.Ticks)); }
public static void WriteDateTime(this ObjectWriter writer, DateTime value) { writer.InnerWrite(FormatterTag.DateTime, BitConverter.GetBytes(value.ToBinary())); }
public static void WriteDecimal(this ObjectWriter writer, Decimal value) { writer.WriteTag(FormatterTag.Decimal); writer.InnerWrite(value); }
private static void WriteGDictionary(ObjectWriter writer, FormatterTag tag, IDictionary value, Type type) { writer.WriteTag(tag); var genericArguments = type.GetGenericArguments(); writer.InnerWrite(genericArguments[0]); writer.InnerWrite(genericArguments[1]); writer.InnerWrite(value.Count); foreach(DictionaryEntry item in value) { writer.Serialize(item.Key); writer.Serialize(item.Value); } }