public static string GetHashKey(this XmlAttributeOverrides overrides) { string result = null; if (overrides != null) { Type type = overrides.GetType(); StringBuilder key = new StringBuilder(type.AssemblyQualifiedName); FieldInfo field = type.GetField("types", BindingFlags.Instance | BindingFlags.NonPublic); if (field != null) { Hashtable table = (Hashtable)field.GetValue(overrides); if (table != null) { foreach (DictionaryEntry entry in table) { Type memberType = (Type)entry.Key; key.Append(memberType.AssemblyQualifiedName); Hashtable memberTable = (Hashtable)entry.Value; foreach (DictionaryEntry memberEntry in memberTable) { string memberName = memberEntry.Key as string; key.Append(memberName); //XmlAttributes attributes = (XmlAttributes)memberEntry.Value; } } } } result = key.ToString();// HashAlgorithmExtensions.GetHash(); } return(result); }