コード例 #1
0
        private SerializerPair TryGetIntrinsicSerializer(TypeInfo typeInfo)
        {
            if (!ReflectionSerializerVerifier.HasIntrinsicMethods(typeInfo))
            {
                return(null);
            }

            var genericArguments = typeInfo.GetGenericArguments();

            if (genericArguments.Length == 1)
            {
                var argument    = genericArguments[0];
                var staticRead  = GetReadStaticSerializer(typeInfo, argument);
                var staticWrite = GetWriteStaticDeserializer(typeInfo);
                return(SerializerPair.CreateFromMethods(staticRead, staticWrite, GetOrRegisterSerializerInternal(argument)));
            }

            if (genericArguments.Length == 0)
            {
                var staticRead  = GetReadStaticSerializer(typeInfo);
                var staticWrite = GetWriteStaticDeserializer(typeInfo);
                return(SerializerPair.CreateFromMethods(staticRead, staticWrite));
            }

            return(null);
        }