Using HttpRequest<TContext>ΒΆ
This topic is a work in progress
// An example of a class used as a request context.
class ExampleRequestContext
{
    public string Action { get; set; }
    public int Id { get; set; }
    public bool? Flag { get; set; }
}
// Some examples using the request context.
ExampleRequestContext context = new ExampleRequestContext();
using (HttpClient httpClient = new HttpClient())
{
    HttpRequest<ExampleRequestContext> requestBuilder =
        HttpRequest<ExampleRequestContext>.Factory.Create("http://localhost:1234/")
            .WithRelativeRequestUri("{action}/{id}?flag={flag?}")
            .WithTemplateParameter("action", context => context.Action)
            .WithTemplateParameter("id", context => context.Id)
            .WithTemplateParameter("flag", context => context.Flag);
    context.Action = "foo";
    context.Id = 1;
    context.Flag = true;
    // Request URI will be "http://localhost:1234/foo/1?flag=True".
    await client.GetAsync(requestBuilder, context);
    context.Flag = false;
    // Request URI will be "http://localhost:1234/foo/1?flag=False".
    await client.GetAsync(requestBuilder, context);
    context.Action = "diddly";
    context.Id = -17;
    context.Flag = null;
    // Request URI will be "http://localhost:1234/diddly/-17".
    await client.GetAsync(requestBuilder, context);
}