public void DoPostMessage <TPost, TReply>(string queryURL, TPost item, ProcessPOSTResult <TReply> callback)
    {
    #if SILVERLIGHT
        Uri uri = new Uri(queryURL, UriKind.Absolute);

        var request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method      = "POST";
        request.ContentType = "application/json";
        request.BeginGetRequestStream(result =>
        {
            var req    = (HttpWebRequest)result.AsyncState;
            var stream = req.EndGetRequestStream(result);

            if (stream != null)
            {
                var data = new
                {
                    name = item
                };


                System.IO.MemoryStream ms             = new System.IO.MemoryStream();
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(TPost));
                serializer.WriteObject(stream, item);
                stream.Close();
            }

            req.BeginGetResponse((requestResult) =>
            {
                var req2           = (HttpWebRequest)requestResult.AsyncState;
                var response       = req2.EndGetResponse(requestResult);
                var responseStream = response.GetResponseStream();
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(TReply));
                TReply responseItem = (TReply)serializer.ReadObject(responseStream);

                System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    callback(responseItem);
                });
            }, req);
        }, request);
    #endif
    }
 public void DoPostMessage <T>(string queryURL, T item, ProcessPOSTResult <T> callback)
 {
     DoPostMessage <T, T>(queryURL, item, callback);
 }