THRIFT-5216 generate DeepCopy methods
Client: netstd
Patch: Jens Geyer
This closes #2155
diff --git a/lib/netstd/Thrift/Collections/TCollections.cs b/lib/netstd/Thrift/Collections/TCollections.cs
index 147bfc7..b386c37 100644
--- a/lib/netstd/Thrift/Collections/TCollections.cs
+++ b/lib/netstd/Thrift/Collections/TCollections.cs
@@ -16,11 +16,12 @@
// under the License.
using System.Collections;
+using System.Collections.Generic;
namespace Thrift.Collections
{
// ReSharper disable once InconsistentNaming
- public class TCollections
+ public static class TCollections
{
/// <summary>
/// This will return true if the two collections are value-wise the same.
@@ -38,6 +39,18 @@
return false;
}
+ // for dictionaries, we need to compare keys and values separately
+ // because KeyValuePair<K,V>.Equals() will not do what we want
+ var fdict = first as IDictionary;
+ var sdict = second as IDictionary;
+ if ((fdict != null) || (sdict != null))
+ {
+ if ((fdict == null) || (sdict == null))
+ return false;
+ return TCollections.Equals(fdict.Keys, sdict.Keys)
+ && TCollections.Equals(fdict.Values, sdict.Values);
+ }
+
var fiter = first.GetEnumerator();
var siter = second.GetEnumerator();
@@ -91,11 +104,13 @@
unchecked
{
- hashcode = (hashcode*397) ^ (objHash);
+ hashcode = (hashcode * 397) ^ (objHash);
}
}
return hashcode;
}
+
+
}
-}
\ No newline at end of file
+}