/// <summary>
        /// Gets a type serializer builder for the given type.
        /// The serializer is created when needed.
        /// </summary>
        public TypeSerializerBuilder GetSerializer(TypeDefinition type)
        {
            TypeSerializerBuilder builder;

            if (typeSerializerBuilders.TryGetValue(type, out builder))
            {
                return(builder);
            }

            builder = new TypeSerializerBuilder(type);
            typeSerializerBuilders.Add(type, builder);
            return(builder);
        }
        private void ProcessSerializers(ProxySerializationContext context)
        {
            if (InterfaceMethod.ReturnType != null)
            {
                var typeDefinition = InterfaceMethod.ReturnType.Resolve();
                if (typeDefinition.FullName != "System.Void")
                {
                    typeDeserializerBuilder = context.GetDeserializer(typeDefinition);
                    deserializerTypeIsArray = InterfaceMethod.ReturnType.IsArray;
                }
            }

            if (!string.IsNullOrEmpty(toSerializeArgument))
            {
                var parameter      = InterfaceMethod.Parameters.First(p => p.Name == toSerializeArgument);
                var typeDefinition = parameter.ParameterType.Resolve();
                typeSerializerBuilder = context.GetSerializer(typeDefinition);
                serializerTypeIsArray = parameter.ParameterType.IsArray;
            }
        }
        /// <summary>
        /// Gets a type serializer builder for the given type.
        /// The serializer is created when needed.
        /// </summary>
        public TypeSerializerBuilder GetSerializer(TypeDefinition type)
        {
            TypeSerializerBuilder builder;
            if (typeSerializerBuilders.TryGetValue(type, out builder))
                return builder;

            builder = new TypeSerializerBuilder(type);
            typeSerializerBuilders.Add(type, builder);
            return builder;
        }
        private void ProcessSerializers(ProxySerializationContext context)
        {
            if (InterfaceMethod.ReturnType != null)
            {
                var typeDefinition = InterfaceMethod.ReturnType.Resolve();
                if (typeDefinition.FullName != "System.Void")
                {
                    typeDeserializerBuilder = context.GetDeserializer(typeDefinition);
                    deserializerTypeIsArray = InterfaceMethod.ReturnType.IsArray;
                }
            }

            if (!string.IsNullOrEmpty(toSerializeArgument))
            {
                var parameter = InterfaceMethod.Parameters.First(p => p.Name == toSerializeArgument);
                var typeDefinition = parameter.ParameterType.Resolve();
                typeSerializerBuilder = context.GetSerializer(typeDefinition);
                serializerTypeIsArray = parameter.ParameterType.IsArray;
            }
        }