Exemple #1
0
 internal static void BaseSerialize <childType>(BinarySerializer serializer, childType value) where childType : T
 {
     if (serializer.CheckPoint(value))
     {
         StructSerialize(serializer, value);
     }
 }
Exemple #2
0
 /// <summary>
 /// 对象序列化
 /// </summary>
 /// <param name="serializer">二进制数据序列化</param>
 /// <param name="value">数据对象</param>
 internal static void ClassSerialize(BinarySerializer serializer, T value)
 {
     if (DefaultSerializer == null)
     {
         if (serializer.CheckPoint(value))
         {
             if (serializer.Config.IsRealType)
             {
                 Type type = value.GetType();
                 if (type != typeof(T))
                 {
                     //if (serializer.CheckPoint(value))
                     {
                         serializer.Stream.Write(BinarySerializer.RealTypeValue);
                         //SerializeMethodCache.GetRealSerializer(type)(serializer, value);
                         GenericType.Get(type).BinarySerializeRealTypeObjectDelegate(serializer, value);
                     }
                     return;
                 }
             }
             if (AutoCSer.Metadata.DefaultConstructor <T> .Type == DefaultConstructorType.None)
             {
                 serializer.Stream.Write(BinarySerializer.NullValue);
             }
             else
             {
                 MemberSerialize(serializer, ref value);
             }
         }
     }
     else
     {
         DefaultSerializer(serializer, value);
     }
 }
Exemple #3
0
 /// <summary>
 /// 找不到构造函数
 /// </summary>
 /// <param name="serializer">二进制数据序列化</param>
 /// <param name="value">数据对象</param>
 private static void noConstructor(BinarySerializer serializer, T value)
 {
     if (serializer.CheckPoint(value))
     {
         if (serializer.Config.IsRealType)
         {
             Type type = value.GetType();
             if (type == typeof(T))
             {
                 serializer.Stream.Write(BinarySerializer.NullValue);
             }
             //else SerializeMethodCache.GetRealSerializer(type)(serializer, value);
             else
             {
                 GenericType.Get(type).BinarySerializeRealTypeObjectDelegate(serializer, value);
             }
         }
         else
         {
             serializer.Stream.Write(BinarySerializer.NullValue);
         }
     }
 }