示例#1
0
    public ExpressionStatementSyntax CreateSetHttpVersionStatement(CurlOptions options)
    {
        var arguments            = new LinkedList <ArgumentSyntax>();
        var majorVersionArgument = options.HttpVersion switch
        {
            HttpVersion.Http09 => RoslynExtensions.CreateIntLiteralArgument(0),
            HttpVersion.Http10 => RoslynExtensions.CreateIntLiteralArgument(1),
            HttpVersion.Http11 => RoslynExtensions.CreateIntLiteralArgument(1),
            HttpVersion.Http20 => RoslynExtensions.CreateIntLiteralArgument(2),
            HttpVersion.Http30 => RoslynExtensions.CreateIntLiteralArgument(3),
            _ => throw new ArgumentOutOfRangeException()
        };

        arguments.AddLast(majorVersionArgument);

        var minorVersionArgument = options.HttpVersion switch
        {
            HttpVersion.Http09 => RoslynExtensions.CreateIntLiteralArgument(9),
            HttpVersion.Http11 => RoslynExtensions.CreateIntLiteralArgument(1),
            _ => RoslynExtensions.CreateIntLiteralArgument(0)
        };

        arguments.AddLast(minorVersionArgument);

        var versionObjectCreationExpression =
            RoslynExtensions.CreateObjectCreationExpression("Version", arguments.ToArray());

        return(SyntaxFactory.ExpressionStatement(
                   RoslynExtensions.CreateMemberAssignmentExpression(
                       RequestVariableName,
                       "Version",
                       versionObjectCreationExpression)));
    }