private static SyntaxNodeOrToken WithParameter( KeyValuePair <string, Argument> argumentDefinition) { var argumentName = argumentDefinition.Key.ToFieldArgumentName(); var argument = argumentDefinition.Value; var typeName = CodeModel.SelectTypeName(argument.Type); return(Parameter(Identifier(argumentName)) .WithType(ParseTypeName(typeName))); }
private SyntaxNodeOrToken WithArgument(KeyValuePair <string, Argument> argumentDefinition) { var rawArgumentName = argumentDefinition.Key; var argument = argumentDefinition.Value; var typeName = CodeModel.SelectTypeName(argument.Type); var isInputObject = argument.Type.Unwrap() is InputObjectType; string getArgumentMethodName; if (isInputObject) { if (argument.Type is List) { typeName = CodeModel.SelectTypeName(argument.Type.Unwrap()); getArgumentMethodName = nameof(ResolverContextExtensions.GetObjectArgumentList); } else { getArgumentMethodName = nameof(ResolverContextExtensions.GetObjectArgument); } } else { getArgumentMethodName = nameof(ResolverContextExtensions.GetArgument); } var getArgumentValue = InvocationExpression( MemberAccessExpression( SyntaxKind.SimpleMemberAccessExpression, IdentifierName("context"), GenericName( Identifier(getArgumentMethodName)) .WithTypeArgumentList( TypeArgumentList( SingletonSeparatedList <TypeSyntax>( IdentifierName(typeName)))))) .WithArgumentList( ArgumentList( SingletonSeparatedList( Argument(LiteralExpression( SyntaxKind.StringLiteralExpression, Literal(rawArgumentName)))))); return(Argument(getArgumentValue)); }