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]);
     }
 }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
 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());
 }
Exemplo n.º 5
0
 public static void InnerWrite(this ObjectWriter writer, Array array)
 {
     writer.InnerWrite(array.Length);
     foreach (var item in array)
     {
         writer.Serialize(item);
     }
 }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
        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]++;
                    }
                }
            }
        }
Exemplo n.º 9
0
        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);
            }
        }