ReadOnlyDictionary.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 / cdf / src / System.Runtime.DurableInstancing / System / Runtime / ReadOnlyDictionary.cs / 1305376 / ReadOnlyDictionary.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------
namespace System.Runtime
{ 
    using System.Collections;
    using System.Collections.Generic; 
 
    [Serializable]
    class ReadOnlyDictionary : IDictionary 
    {
        IDictionary dictionary;

        public ReadOnlyDictionary(IDictionary dictionary) 
            : this(dictionary, true)
        { 
 
        }
        public ReadOnlyDictionary(IDictionary dictionary, bool makeCopy) 
        {
            if (makeCopy)
            {
                this.dictionary = new Dictionary(dictionary); 
            }
            else 
            { 
                this.dictionary = dictionary;
            } 
        }

        public int Count
        { 
            get { return this.dictionary.Count; }
        } 
 
        public bool IsReadOnly
        { 
            get { return true; }
        }

        public ICollection Keys 
        {
            get { return this.dictionary.Keys; } 
        } 

        public ICollection Values 
        {
            get { return this.dictionary.Values; }
        }
 
        public TValue this[TKey key]
        { 
            get 
            {
                return this.dictionary[key]; 
            }
            set
            {
                throw Fx.Exception.AsError(CreateReadOnlyException()); 
            }
        } 
 
        public static IDictionary Create(IDictionary dictionary)
        { 
            if (dictionary.IsReadOnly)
            {
                return dictionary;
            } 
            else
            { 
                return new ReadOnlyDictionary(dictionary); 
            }
        } 

        Exception CreateReadOnlyException()
        {
            return new InvalidOperationException(SRCore.DictionaryIsReadOnly); 
        }
 
        public void Add(TKey key, TValue value) 
        {
            throw Fx.Exception.AsError(CreateReadOnlyException()); 
        }

        public void Add(KeyValuePair item)
        { 
            throw Fx.Exception.AsError(CreateReadOnlyException());
        } 
 
        public void Clear()
        { 
            throw Fx.Exception.AsError(CreateReadOnlyException());
        }

        public bool Contains(KeyValuePair item) 
        {
            return this.dictionary.Contains(item); 
        } 
        public bool ContainsKey(TKey key)
        { 
            return this.dictionary.ContainsKey(key);
        }

        public void CopyTo(KeyValuePair[] array, int arrayIndex) 
        {
            this.dictionary.CopyTo(array, arrayIndex); 
        } 

        public IEnumerator> GetEnumerator() 
        {
            return this.dictionary.GetEnumerator();
        }
 
        IEnumerator IEnumerable.GetEnumerator()
        { 
            return this.GetEnumerator(); 
        }
 
        public bool Remove(TKey key)
        {
            throw Fx.Exception.AsError(CreateReadOnlyException());
        } 

        public bool Remove(KeyValuePair item) 
        { 
            throw Fx.Exception.AsError(CreateReadOnlyException());
        } 

        public bool TryGetValue(TKey key, out TValue value)
        {
            return this.dictionary.TryGetValue(key, out value); 
        }
    } 
} 

// 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