Automatically create a companion client-side SDK?
===

Consider the following situation. In **Project 1**, I have a Web Service that exposes the following API:

    [WebMethod(Description = "Returns available types")]
    public string GetFields(string param1)
    {
       return "test string";
    }

Such `WebMethods` exist under one web application project. 

In **Project 2**, under the same solution, I am creating a client-side SDK that I want to distribute as a DLL that lets users invoke web-side API calls without having to worry about making HTTP calls, mapping the result onto custom objects etc. Therefore, every server-side call has a counter-part in the client-side SDK like this:

    public string GetFields(string param1)
    {
        Dictionary<string, string> parameters = new Dictionary<string, string>()
        {
            {"param1", param1}
        };

        var Data = serializer.Serialize((object)parameters);
        string result = MakeRequest("http://...//GetFields", Data);
        // deserialize result and return string/object
    }

One concern is that *all* the calls look like this and have the pattern: 

 - Have a method name and signature similar to the server-side call
 - Have the exact body of code above
 - Return the result in the form of an object specific to that API call

I am manually create the counterparts for the server-side in **Project 2**, but I was wondering if it is possible to automate this code generation (using Reflection perhaps)? Any suggestions on how to approach this problem? 

The main advantage I perceive is that the client-side SDK can be automatically generated when the server-side code changes or new API calls are added with a simple build.