KeyValuePair <TKey, TValue> ITypeSerializer <KeyValuePair <TKey, TValue> > .Deserialize(ref AccelReader reader)
        {
            TKey   key   = reader.HasNext() ? reader.ReadGeneric <TKey>() : default;
            TValue value = reader.HasNext() ? reader.ReadGeneric <TValue>() : default;

            return(new KeyValuePair <TKey, TValue>(key, value));
        }
Пример #2
0
        Dictionary <TKey, TValue> ITypeSerializer <Dictionary <TKey, TValue> > .Deserialize(ref AccelReader reader)
        {
            Dictionary <TKey, TValue> result = new Dictionary <TKey, TValue>();

            while (reader.HasNext())
            {
                TKey   key   = reader.ReadGeneric <TKey>();
                TValue value = reader.HasNext() ? reader.ReadGeneric <TValue>() : default;
                result.Add(key, value);
            }

            return(result);
        }
Пример #3
0
            /// <summary>
            /// 反序列化方法(自动生成)
            /// </summary>
            public UsingAsDeclaration Deserialize(ref AccelReader reader)
            {
                UsingAsDeclaration result = new UsingAsDeclaration();
                int index;

                while (reader.HasNext(out index))
                {
                    switch (index)
                    {
                    case 1:
                        result.m_TypeName = reader.ReadGeneric <TypeName>();
                        break;

                    case 2:
                        result.m_AliasName = reader.ReadString();
                        break;

                    default:
                        reader.SkipNext();
                        break;
                    }
                }

                result.OnAfterDeserialization();
                return(result);
            }
Пример #4
0
        object ITypeSerializer <object> .Deserialize(ref AccelReader reader)
        {
            if (!reader.HasNext())
            {
                return(null);
            }

            Type   type       = Type.GetType(reader.ReadString());
            object serializer = typeof(InternalTypeCache <>).MakeGenericType(type).GetField(s_SerializerFieldName).GetValue(null);

            if (serializer is IBuiltinTypeSerializer && !reader.HasNext())
            {
                return(null);
            }

            MethodInfo method = MethodBase.GetMethodFromHandle(s_DeserializeMethod) as MethodInfo;

            return(method.MakeGenericMethod(type).Invoke(null, new object[] { serializer, reader }));
        }
Пример #5
0
        Type ITypeSerializer <Type> .Deserialize(ref AccelReader reader)
        {
            if (!reader.HasNext())
            {
                return(null);
            }

            string value = reader.ReadString();

            return(Type.GetType(value, false));
        }
Пример #6
0
            /// <summary>
            /// 反序列化方法(自动生成)
            /// </summary>
            public StructDeclaration Deserialize(ref AccelReader reader)
            {
                StructDeclaration result = new StructDeclaration();
                int index;

                while (reader.HasNext(out index))
                {
                    switch (index)
                    {
                    case 1:
                        result.m_Visibility = (TypeVisibility)reader.ReadInt32();
                        break;

                    case 2:
                        result.m_IsFinal = reader.ReadBoolean();
                        break;

                    case 3:
                        result.m_IsRef = reader.ReadBoolean();
                        break;

                    case 4:
                        result.m_IsNested = reader.ReadBoolean();
                        break;

                    case 5:
                        result.m_IsFieldIndexContinuous = reader.ReadBoolean();
                        break;

                    case 6:
                        result.m_Name = reader.ReadString();
                        break;

                    case 7:
                        result.m_Doc = reader.ReadString();
                        break;

                    case 8:
                        result.m_Size = reader.ReadVariantInt();
                        break;

                    case 9:
                        result.m_Declarations = reader.ReadGeneric <DeclarationArray>();
                        break;

                    default:
                        reader.SkipNext();
                        break;
                    }
                }

                result.OnAfterDeserialization();
                return(result);
            }
Пример #7
0
        T ITypeSerializer <T> .Deserialize(ref AccelReader reader)
        {
            T result = new T();

            while (reader.HasNext())
            {
                TValue value = reader.ReadGeneric <TValue>();
                result.Add(value);
            }

            return(result);
        }
Пример #8
0
        List <T> ITypeSerializer <List <T> > .Deserialize(ref AccelReader reader)
        {
            List <T> result = new List <T>();

            while (reader.HasNext())
            {
                T value = reader.ReadGeneric <T>();
                result.Add(value);
            }

            return(result);
        }
Пример #9
0
            /// <summary>
            /// 反序列化方法(自动生成)
            /// </summary>
            public TypeName Deserialize(ref AccelReader reader)
            {
                TypeName result = new TypeName();
                int      index;

                while (reader.HasNext(out index))
                {
                    switch (index)
                    {
                    case 1:
                        result.m_RawString = reader.ReadString();
                        break;

                    case 2:
                        result.m_RawStringWithoutNullableAndArraySuffix = reader.ReadString();
                        break;

                    case 3:
                        result.m_IsGenericType = reader.ReadBoolean();
                        break;

                    case 4:
                        result.m_GenericTypeDefinitionName = reader.ReadGeneric <TypeName>();
                        break;

                    case 5:
                        result.m_GenericParameters = reader.ReadGeneric <TypeName[]>();
                        break;

                    case 6:
                        result.m_IsNullable = reader.ReadBoolean();
                        break;

                    case 7:
                        result.m_ArraySuffixCount = reader.ReadVariantInt();
                        break;

                    default:
                        reader.SkipNext();
                        break;
                    }
                }

                result.OnAfterDeserialization();
                return(result);
            }
Пример #10
0
            /// <summary>
            /// 反序列化方法(自动生成)
            /// </summary>
            public FieldDeclaration Deserialize(ref AccelReader reader)
            {
                FieldDeclaration result = new FieldDeclaration();
                int index;

                while (reader.HasNext(out index))
                {
                    switch (index)
                    {
                    case 1:
                        result.m_RealType = reader.ReadGeneric <TypeName>();
                        break;

                    case 2:
                        result.m_Type = reader.ReadGeneric <TypeName>();
                        break;

                    case 3:
                        result.m_Name = reader.ReadString();
                        break;

                    case 4:
                        result.m_Doc = reader.ReadString();
                        break;

                    case 5:
                        result.m_Index = reader.ReadVariantInt();
                        break;

                    case 6:
                        result.m_IsObsolete = reader.ReadBoolean();
                        break;

                    case 7:
                        result.m_IsNeverNull = reader.ReadBoolean();
                        break;

                    default:
                        reader.SkipNext();
                        break;
                    }
                }

                result.OnAfterDeserialization();
                return(result);
            }
Пример #11
0
        T[] ITypeSerializer <T[]> .Deserialize(ref AccelReader reader)
        {
            if (!reader.HasNext(out int index))
            {
                return(null);
            }

            int len = (int)reader.ReadVariantUInt();

            T[] result = new T[len];

            for (int i = 0; reader.HasNext(); i++)
            {
                result[i] = reader.ReadGeneric <T>();
            }

            return(result);
        }
Пример #12
0
            /// <summary>
            /// 反序列化方法(自动生成)
            /// </summary>
            public PackageDeclaration Deserialize(ref AccelReader reader)
            {
                PackageDeclaration result = new PackageDeclaration();
                int index;

                while (reader.HasNext(out index))
                {
                    switch (index)
                    {
                    case 1:
                        result.m_PackageName = reader.ReadString();
                        break;

                    default:
                        reader.SkipNext();
                        break;
                    }
                }

                result.OnAfterDeserialization();
                return(result);
            }
Пример #13
0
 Guid ITypeSerializer <Guid> .Deserialize(ref AccelReader reader)
 {
     if (!reader.HasNext())
     {
         return(default);
Пример #14
0
 T? ITypeSerializer <T?> .Deserialize(ref AccelReader reader)
 {
     if (reader.HasNext() && reader.ReadBoolean())
     {
         return(reader.HasNext() ? reader.ReadGeneric <T>() : default);