diff --git a/compiler/cpp/src/generate/t_csharp_generator.cc b/compiler/cpp/src/generate/t_csharp_generator.cc
index cfb1ff1..f4fd543 100644
--- a/compiler/cpp/src/generate/t_csharp_generator.cc
+++ b/compiler/cpp/src/generate/t_csharp_generator.cc
@@ -781,17 +781,18 @@
   f_service_ << endl;
 
   indent(f_service_) <<
-    "public Client(TProtocol iprot, TProtocol oprot)" << endl;
+    "public Client(TProtocol iprot, TProtocol oprot)";
+  if (!extends.empty()) {
+    f_service_ << " : base(iprot, oprot)";
+  }
+  f_service_ << endl;
+
   scope_up(f_service_);
   if (extends.empty()) {
     f_service_ <<
       indent() << "iprot_ = iprot;" << endl <<
       indent() << "oprot_ = oprot;" << endl;
-  } else {
-    f_service_ <<
-      indent() << "base(iprot, oprot);" << endl;
   }
-
   scope_down(f_service_);
 
   f_service_ << endl;
@@ -957,18 +958,18 @@
   indent_up();
 
   indent(f_service_) <<
-    "public Processor(Iface iface)" << endl;
-  scope_up(f_service_);
+    "public Processor(Iface iface)" ;
   if (!extends.empty()) {
-    f_service_ <<
-      indent() << "base(iface);" << endl;
+    f_service_ << " : base(iface)";
   }
+  f_service_ << endl;
+  scope_up(f_service_);
   f_service_ <<
     indent() << "iface_ = iface;" << endl;
 
   for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
     f_service_ <<
-      indent() << "processMap_[\"" << (*f_iter)->get_name() << "\"] = new " << (*f_iter)->get_name() << "();" << endl;
+      indent() << "processMap_[\"" << (*f_iter)->get_name() << "\"] = " << (*f_iter)->get_name() << "_Process;" << endl;
   }
 
   scope_down(f_service_);
@@ -976,9 +977,7 @@
 
   if (extends.empty()) {
     f_service_ <<
-      indent() << "protected interface ProcessFunction {" << endl <<
-      indent() << "  void Process(int seqid, Iface iface, TProtocol iprot, TProtocol oprot);" << endl <<
-      indent() << "}" << endl << endl;
+      indent() << "protected delegate void ProcessFunction(int seqid, TProtocol iprot, TProtocol oprot);" << endl;
   }
 
   f_service_ <<
@@ -991,8 +990,15 @@
 
   f_service_ << endl;
 
-  indent(f_service_) <<
-    "public bool Process(TProtocol iprot, TProtocol oprot)" << endl;
+  if (extends.empty()) {
+    indent(f_service_) <<
+      "public bool Process(TProtocol iprot, TProtocol oprot)" << endl;
+  }
+  else
+  {
+    indent(f_service_) <<
+      "public new bool Process(TProtocol iprot, TProtocol oprot)" << endl;
+  }
   scope_up(f_service_);
 
   f_service_ <<
@@ -1010,7 +1016,7 @@
     indent() << "  oprot.Transport.Flush();" << endl <<
     indent() << "  return true;" << endl <<
     indent() << "}" << endl <<
-    indent() << "fn.Process(msg.SeqID, iface_, iprot, oprot);" << endl;
+    indent() << "fn(msg.SeqID, iprot, oprot);" << endl;
 
   f_service_ <<
     indent() << "return true;" << endl;
@@ -1051,11 +1057,7 @@
 
 void t_csharp_generator::generate_process_function(t_service* tservice, t_function* tfunction) {
   indent(f_service_) <<
-    "private class " << tfunction->get_name() << " : ProcessFunction {" << endl;
-  indent_up();
-
-  indent(f_service_) <<
-    "public void Process(int seqid, Iface iface, TProtocol iprot, TProtocol oprot)" << endl;
+    "public void " << tfunction->get_name() << "_Process(int seqid, TProtocol iprot, TProtocol oprot)" << endl;
   scope_up(f_service_);
 
   string argsname = tfunction->get_name() + "_args";
@@ -1090,7 +1092,7 @@
     f_service_ << "result.success = ";
   }
   f_service_ <<
-    "iface." << tfunction->get_name() << "(";
+    "iface_." << tfunction->get_name() << "(";
   bool first = true;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     if (first) {
@@ -1131,9 +1133,6 @@
       indent() << "return;" << endl;
     scope_down(f_service_);
 
-    indent_down();
-    f_service_ <<
-      indent() << "}" << endl << endl;
     return;
   }
 
@@ -1146,11 +1145,6 @@
   scope_down(f_service_);
 
   f_service_ << endl;
-
-  indent_down();
-
-  f_service_ <<
-    indent() << "}" << endl << endl;
 }
 
 void t_csharp_generator::generate_deserialize_field(ofstream& out, t_field* tfield, string prefix) {
