private void AppendDeserializeLeaf( StringBuilder body, ResultParserDeserializerMethodDescriptor methodDescriptor, ResultTypeComponentDescriptor type, string indent) { AppendNullHandling( body, "obj", "value", IsNullable(type), indent, string.Empty); body.AppendLine(); body.AppendLine(); body.Append($"return "); AppendDeserializeLeafValue( body, methodDescriptor.Serializer.FieldName, "value", methodDescriptor.SerializationType, methodDescriptor.RuntimeType, IsNullable(type)); body.Append(";"); }
private bool IsNullable(ResultTypeComponentDescriptor typeComponent) { if (typeComponent.IsNullable) { if (typeComponent.IsReferenceType) { return(NullableRefTypes); } return(true); } return(false); }
private void AppendDeserializeLeafList( StringBuilder body, ResultParserDeserializerMethodDescriptor methodDescriptor, ResultTypeComponentDescriptor type, ImmutableQueue <ResultTypeComponentDescriptor> runtimeTypeComponents, string indent) { AppendNullHandling( body, "obj", "value", IsNullable(type), indent, string.Empty); body.AppendLine(); body.AppendLine(); AppendList( body, new ListInfo( "value", "i", "count", "element", "result", type.Name), IsNullable(runtimeTypeComponents.Peek()), initialIndent => AppendSetLeafElement( body, "result", "i", methodDescriptor.Serializer.FieldName, "element", methodDescriptor.SerializationType, runtimeTypeComponents.Peek().Name, IsNullable(runtimeTypeComponents.Peek()), initialIndent), indent, string.Empty); body.AppendLine(); body.AppendLine(); body.AppendLine("return result;"); }