Polish code (#20)

diff --git a/rocketmq-client-csharp/Client.cs b/rocketmq-client-csharp/Client.cs
index 164e98a..1d32095 100644
--- a/rocketmq-client-csharp/Client.cs
+++ b/rocketmq-client-csharp/Client.cs
@@ -31,7 +31,7 @@
     {
         protected static readonly Logger Logger = MqLogManager.Instance.GetCurrentClassLogger();
 
-        public Client(AccessPoint accessPoint, string resourceNamespace)
+        protected Client(AccessPoint accessPoint, string resourceNamespace)
         {
             // Support IPv4 for now
             AccessPointScheme = rmq::AddressScheme.Ipv4;
@@ -198,7 +198,7 @@
                     Logger.Warn($"Failed to query route of {topic} from {target}");
                 }
             }
-            catch (System.Exception e)
+            catch (Exception e)
             {
                 Logger.Warn(e, "Failed when querying route");
             }
@@ -206,7 +206,7 @@
             return null;
         }
 
-        public abstract void PrepareHeartbeatData(rmq::HeartbeatRequest request);
+        protected abstract void PrepareHeartbeatData(rmq::HeartbeatRequest request);
 
         public async Task Heartbeat()
         {
@@ -243,7 +243,7 @@
 
         }
 
-        public async Task<List<rmq::Assignment>> scanLoadAssignment(string topic, string group)
+        protected async Task<List<rmq::Assignment>> scanLoadAssignment(string topic, string group)
         {
             // Pick a broker randomly
             string target = FilterBroker((s) => true);
diff --git a/rocketmq-client-csharp/FilterExpression.cs b/rocketmq-client-csharp/FilterExpression.cs
index 0dc0b92..3bd432d 100644
--- a/rocketmq-client-csharp/FilterExpression.cs
+++ b/rocketmq-client-csharp/FilterExpression.cs
@@ -14,30 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 namespace Org.Apache.Rocketmq
 {
     public class FilterExpression
     {
-
         public FilterExpression(string expression, ExpressionType type)
         {
-            _expression = expression;
-            _type = type;
+            Expression = expression;
+            Type = type;
         }
 
-        private ExpressionType _type;
-
-        private string _expression;
-
-        public ExpressionType Type
-        {
-            get { return _type; }
-        }
-
-        public string Expression
-        {
-            get { return _expression; }
-        }
-
+        public ExpressionType Type { get; }
+        public string Expression { get; }
     }
 }
\ No newline at end of file
diff --git a/rocketmq-client-csharp/IProducer.cs b/rocketmq-client-csharp/IProducer.cs
index 8819c4f..cbb82d4 100644
--- a/rocketmq-client-csharp/IProducer.cs
+++ b/rocketmq-client-csharp/IProducer.cs
@@ -23,6 +23,6 @@
 
         void Shutdown();
 
-        Task<SendResult> Send(Message message);
+        Task<SendReceipt> Send(Message message);
     }
 }
\ No newline at end of file
diff --git a/rocketmq-client-csharp/Producer.cs b/rocketmq-client-csharp/Producer.cs
index 7932282..ccddc8c 100644
--- a/rocketmq-client-csharp/Producer.cs
+++ b/rocketmq-client-csharp/Producer.cs
@@ -45,12 +45,12 @@
             base.Shutdown();
         }
 
-        public override void PrepareHeartbeatData(rmq::HeartbeatRequest request)
+        protected override void PrepareHeartbeatData(rmq::HeartbeatRequest request)
         {
 
         }
 
-        public async Task<SendResult> Send(Message message)
+        public async Task<SendReceipt> Send(Message message)
         {
             if (!loadBalancer.ContainsKey(message.Topic))
             {
@@ -118,7 +118,7 @@
                     {
 
                         var messageId = response.Entries[0].MessageId;
-                        return new SendResult(messageId);
+                        return new SendReceipt(messageId);
                     }
                 }
                 catch (Exception e)
diff --git a/rocketmq-client-csharp/Publishing.cs b/rocketmq-client-csharp/Publishing.cs
index 138b65a..ffedd17 100644
--- a/rocketmq-client-csharp/Publishing.cs
+++ b/rocketmq-client-csharp/Publishing.cs
@@ -14,8 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-using rmq = Apache.Rocketmq.V2;
 
+using rmq = Apache.Rocketmq.V2;
 using System.Collections.Generic;
 
 namespace Org.Apache.Rocketmq
@@ -23,28 +23,9 @@
     // Settings for publishing
     public class Publishing
     {
-        private List<rmq::Resource> _topics;
-        public List<rmq::Resource> Topics
-        {
-            get { return _topics; }
-            set { _topics = value; }
-        }
+        public List<rmq::Resource> Topics { get; set; }
+        public int CompressBodyThreshold { get; set; }
 
-        private int _compressBodyThreshold;
-        public int CompressBodyThreshold
-        {
-            get { return _compressBodyThreshold; }
-            set { _compressBodyThreshold = value; }
-        }
-
-        private int _maxBodySize;
-        public int MaxBodySize
-        {
-            get { return _maxBodySize; }
-            set { _maxBodySize = value; }
-        }
-
+        public int MaxBodySize { get; set; }
     }
-
-
 }
\ No newline at end of file
diff --git a/rocketmq-client-csharp/PushConsumer.cs b/rocketmq-client-csharp/PushConsumer.cs
index 6ab362d..def9be4 100644
--- a/rocketmq-client-csharp/PushConsumer.cs
+++ b/rocketmq-client-csharp/PushConsumer.cs
@@ -224,7 +224,7 @@
             }
         }
 
-        public override void PrepareHeartbeatData(rmq::HeartbeatRequest request)
+        protected override void PrepareHeartbeatData(rmq::HeartbeatRequest request)
         {
         }
 
diff --git a/rocketmq-client-csharp/SendResult.cs b/rocketmq-client-csharp/SendReceipt.cs
similarity index 79%
rename from rocketmq-client-csharp/SendResult.cs
rename to rocketmq-client-csharp/SendReceipt.cs
index a726ff9..0f29991 100644
--- a/rocketmq-client-csharp/SendResult.cs
+++ b/rocketmq-client-csharp/SendReceipt.cs
@@ -15,27 +15,34 @@
  * limitations under the License.
  */
 
-namespace Org.Apache.Rocketmq {
-    public sealed class SendResult {
-        public SendResult(string messageId) {
+namespace Org.Apache.Rocketmq
+{
+    public sealed class SendReceipt
+    {
+        public SendReceipt(string messageId)
+        {
             status_ = SendStatus.SEND_OK;
             messageId_ = messageId;
         }
 
-        public SendResult(string messageId, SendStatus status) {
+        public SendReceipt(string messageId, SendStatus status)
+        {
             status_ = status;
             messageId_ = messageId;
         }
 
         private string messageId_;
 
-        public string MessageId {
+        public string MessageId
+        {
             get { return messageId_; }
         }
 
 
         private SendStatus status_;
-        public SendStatus Status {
+
+        public SendStatus Status
+        {
             get { return status_; }
         }
     }
diff --git a/rocketmq-client-csharp/Session.cs b/rocketmq-client-csharp/Session.cs
index 268e077..dc13dc9 100644
--- a/rocketmq-client-csharp/Session.cs
+++ b/rocketmq-client-csharp/Session.cs
@@ -14,25 +14,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 using System.Threading;
 using System.Threading.Tasks;
 using grpc = global::Grpc.Core;
 using NLog;
-
-
 using rmq = Apache.Rocketmq.V2;
 
 namespace Org.Apache.Rocketmq
 {
-
     class Session
     {
-
         private static readonly Logger Logger = MqLogManager.Instance.GetCurrentClassLogger();
 
         public Session(string target,
-                       grpc::AsyncDuplexStreamingCall<rmq::TelemetryCommand, rmq::TelemetryCommand> stream,
-                       IClient client)
+            grpc::AsyncDuplexStreamingCall<rmq::TelemetryCommand, rmq::TelemetryCommand> stream,
+            IClient client)
         {
             this._target = target;
             this._stream = stream;
@@ -54,27 +51,26 @@
                     switch (cmd.CommandCase)
                     {
                         case rmq::TelemetryCommand.CommandOneofCase.None:
-                            {
-                                Logger.Warn($"Telemetry failed: {cmd.Status.ToString()}");
-                                break;
-                            }
+                        {
+                            Logger.Warn($"Telemetry failed: {cmd.Status}");
+                            break;
+                        }
                         case rmq::TelemetryCommand.CommandOneofCase.Settings:
-                            {
-
-                                break;
-                            }
+                        {
+                            break;
+                        }
                         case rmq::TelemetryCommand.CommandOneofCase.PrintThreadStackTraceCommand:
-                            {
-                                break;
-                            }
+                        {
+                            break;
+                        }
                         case rmq::TelemetryCommand.CommandOneofCase.RecoverOrphanedTransactionCommand:
-                            {
-                                break;
-                            }
+                        {
+                            break;
+                        }
                         case rmq::TelemetryCommand.CommandOneofCase.VerifyMessageCommand:
-                            {
-                                break;
-                            }
+                        {
+                            break;
+                        }
                     }
                 }
             }
@@ -86,15 +82,20 @@
         }
 
         private string _target;
-        public string Target { get { return _target; } }
+
+        public string Target
+        {
+            get { return _target; }
+        }
+
         private grpc::AsyncDuplexStreamingCall<rmq::TelemetryCommand, rmq::TelemetryCommand> _stream;
         private IClient _client;
 
         private CancellationTokenSource _cts = new CancellationTokenSource();
+
         public CancellationTokenSource CTS
         {
             get { return _cts; }
         }
     };
-
 }
\ No newline at end of file
diff --git a/tests/SendResultTest.cs b/tests/SendResultTest.cs
index 42a013c..475cf6d 100644
--- a/tests/SendResultTest.cs
+++ b/tests/SendResultTest.cs
@@ -25,7 +25,7 @@
         [TestMethod]
         public void testCtor() {
             string messageId = new string("abc");
-            var sendResult = new SendResult(messageId);
+            var sendResult = new SendReceipt(messageId);
             Assert.AreEqual(messageId, sendResult.MessageId);
             Assert.AreEqual(SendStatus.SEND_OK, sendResult.Status);
         }
@@ -34,7 +34,7 @@
         [TestMethod]
         public void testCtor2() {
             string messageId = new string("abc");
-            var sendResult = new SendResult(messageId, SendStatus.FLUSH_DISK_TIMEOUT);
+            var sendResult = new SendReceipt(messageId, SendStatus.FLUSH_DISK_TIMEOUT);
             Assert.AreEqual(messageId, sendResult.MessageId);
             Assert.AreEqual(SendStatus.FLUSH_DISK_TIMEOUT, sendResult.Status);
         }