// (C) 2002 John Donagher
//
-using System;\r
-using System.Collections;\r
-\r
-namespace System.Xml.Serialization\r
-{\r
- /// <summary>\r
- /// Summary description for XmlAttributeOverrides.\r
- /// </summary>\r
- public class XmlAttributeOverrides\r
- {\r
- \r
- private Hashtable overrides;\r
-\r
- public XmlAttributeOverrides ()\r
- {\r
- overrides = new Hashtable();\r
- }\r
-\r
- public XmlAttributes this [Type type] \r
- {\r
- get { return this [type, string.Empty]; }\r
- }\r
-\r
- public XmlAttributes this [Type type, string member]\r
- {\r
- get \r
- {\r
- return (XmlAttributes) overrides[GetKey(type,member)];\r
- }\r
- }\r
-\r
- public void Add (Type type, XmlAttributes attributes) \r
- {\r
- Add(type, string.Empty, attributes);\r
- }\r
-\r
- public void Add (Type type, string member, XmlAttributes attributes) \r
- {\r
- if(overrides[GetKey(type, member)] != null)\r
- throw new Exception("The attributes for the given type and Member already exist in the collection");\r
- \r
- overrides.Add(GetKey(type,member), attributes);\r
- }\r
-\r
- private TypeMember GetKey(Type type, string member)\r
- {\r
- return new TypeMember(type, member);\r
- }\r
-\r
- }\r
-}
\ No newline at end of file
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Globalization;
+
+namespace System.Xml.Serialization
+{
+ /// <summary>
+ /// Summary description for XmlAttributeOverrides.
+ /// </summary>
+ public class XmlAttributeOverrides
+ {
+
+ private Hashtable overrides;
+
+ public XmlAttributeOverrides ()
+ {
+ overrides = new Hashtable();
+ }
+
+ public XmlAttributes this [Type type]
+ {
+ get { return this [type, string.Empty]; }
+ }
+
+ public XmlAttributes this [Type type, string member]
+ {
+ get
+ {
+ return (XmlAttributes) overrides[GetKey(type,member)];
+ }
+ }
+
+ public void Add (Type type, XmlAttributes attributes)
+ {
+ Add(type, string.Empty, attributes);
+ }
+
+ public void Add (Type type, string member, XmlAttributes attributes)
+ {
+ if(overrides[GetKey(type, member)] != null)
+ throw new Exception("The attributes for the given type and Member already exist in the collection");
+
+ overrides.Add(GetKey(type,member), attributes);
+ }
+
+ private TypeMember GetKey(Type type, string member)
+ {
+ return new TypeMember(type, member);
+ }
+
+ internal void AddKeyHash (System.Text.StringBuilder sb)
+ {
+ sb.Append ("XAO ");
+ foreach (DictionaryEntry entry in overrides)
+ {
+ XmlAttributes val = (XmlAttributes) entry.Value;
+ IFormattable keyFormattable = entry.Key as IFormattable;
+ sb.Append (keyFormattable != null ? keyFormattable.ToString (null, CultureInfo.InvariantCulture) : entry.Key.ToString()).Append(' ');
+ val.AddKeyHash (sb);
+ }
+ sb.Append ("|");
+ }
+ }
+}