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 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); } }
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); } }
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()); }
public static void InnerWrite(this ObjectWriter writer, Array array) { writer.InnerWrite(array.Length); foreach (var item in array) { writer.Serialize(item); } }
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 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 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]++; } } } }
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); } }