THRIFT-4859 Enables changing 'UserAgent'
Client: C#
Patch: Park June Chul <pjc0247@naver.com>

This closes #1787
diff --git a/lib/csharp/src/Transport/THttpClient.cs b/lib/csharp/src/Transport/THttpClient.cs
index 667fc25..986799c 100644
--- a/lib/csharp/src/Transport/THttpClient.cs
+++ b/lib/csharp/src/Transport/THttpClient.cs
@@ -1,4 +1,4 @@
-/**
+/**
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
@@ -43,6 +43,7 @@
         private int readTimeout = 30000;
 
         private IDictionary<string, string> customHeaders = new Dictionary<string, string>();
+        private string userAgent = "C#/THttpClient";
 
 #if !SILVERLIGHT
         private IWebProxy proxy = WebRequest.DefaultWebProxy;
@@ -52,12 +53,22 @@
             : this(u, Enumerable.Empty<X509Certificate>())
         {
         }
+        public THttpClient(Uri u, string userAgent)
+            : this(u, userAgent, Enumerable.Empty<X509Certificate>())
+        {
+        }
 
         public THttpClient(Uri u, IEnumerable<X509Certificate> certificates)
         {
             uri = u;
             this.certificates = (certificates ?? Enumerable.Empty<X509Certificate>()).ToArray();
         }
+        public THttpClient(Uri u, string userAgent, IEnumerable<X509Certificate> certificates)
+        {
+            uri = u;
+            this.userAgent = userAgent;
+            this.certificates = (certificates ?? Enumerable.Empty<X509Certificate>()).ToArray();
+        }
 
         public int ConnectTimeout
         {
@@ -271,7 +282,7 @@
             // Make the request
             connection.ContentType = "application/x-thrift";
             connection.Accept = "application/x-thrift";
-            connection.UserAgent = "C#/THttpClient";
+            connection.UserAgent = userAgent;
             connection.Method = "POST";
 #if !SILVERLIGHT
             connection.ProtocolVersion = HttpVersion.Version10;