THRIFT-1958 C#: Use static Object.Equals instead of .Equals() calls in equals

Patch: Carl Yeksigian
diff --git a/compiler/cpp/src/generate/t_csharp_generator.cc b/compiler/cpp/src/generate/t_csharp_generator.cc
index 90336a6..a1041fd 100644
--- a/compiler/cpp/src/generate/t_csharp_generator.cc
+++ b/compiler/cpp/src/generate/t_csharp_generator.cc
@@ -1076,10 +1076,11 @@
     }
     t_type* ttype = (*f_iter)->get_type();
     if (ttype->is_container()) {
-      out << "TCollections.Equals(" << prop_name((*f_iter)) << ", other." << prop_name((*f_iter)) << ")";
+      out << "TCollections.Equals(";
     } else {
-      out << prop_name((*f_iter)) << ".Equals(other." << prop_name((*f_iter)) << ")";
+      out << "System.Object.Equals(";
     }
+    out << prop_name((*f_iter)) << ", other." << prop_name((*f_iter)) << ")";
     if (!field_is_required((*f_iter)) && !(nullable_ && !field_has_default((*f_iter)))) {
       out << ")))";
     }