NameTable.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / Serialization / NameTable.cs / 1305376 / NameTable.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace System.Xml.Serialization { 

    using System.Collections; 

    internal class NameKey {
        string ns;
        string name; 

        internal NameKey(string name, string ns) { 
            this.name = name; 
            this.ns = ns;
        } 

        public override bool Equals(object other) {
            if (!(other is NameKey)) return false;
            NameKey key = (NameKey)other; 
            return name == key.name && ns == key.ns;
        } 
 
        public override int GetHashCode() {
            return (ns == null ? "".GetHashCode() : ns.GetHashCode()) ^ (name == null ? 0 : name.GetHashCode()); 
        }
    }
    internal interface INameScope {
        object this[string name, string ns] {get; set;} 
    }
    internal class NameTable : INameScope { 
        Hashtable table = new Hashtable(); 

        internal void Add(XmlQualifiedName qname, object value) { 
            Add(qname.Name, qname.Namespace, value);
        }

        internal void Add(string name, string ns, object value) { 
            NameKey key = new NameKey(name, ns);
            table.Add(key, value); 
        } 

        internal object this[XmlQualifiedName qname] { 
            get {
                return table[new NameKey(qname.Name, qname.Namespace)];
            }
            set { 
                table[new NameKey(qname.Name, qname.Namespace)] = value;
            } 
        } 
        internal object this[string name, string ns] {
            get { 
                return table[new NameKey(name, ns)];
            }
            set {
                table[new NameKey(name, ns)] = value; 
            }
        } 
        object INameScope.this[string name, string ns] { 
            get {
                return table[new NameKey(name, ns)]; 
            }
            set {
                table[new NameKey(name, ns)] = value;
            } 
        }
 
        internal ICollection Values { 
            get { return table.Values; }
        } 

        internal Array ToArray(Type type) {
            Array a = Array.CreateInstance(type, table.Count);
            table.Values.CopyTo(a, 0); 
            return a;
        } 
    } 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK