ReadOnlyDictionary.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Hosting / ReadOnlyDictionary.cs / 1305376 / ReadOnlyDictionary.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
/*============================================================
** 
** Class:  ReadOnlyDictionary 
**    A wrapper on a Dictionary that throws if any of the
**    write methods or property setters are called. 
**
===========================================================*/
using System;
using System.Collections.Generic; 
using System.Diagnostics.Contracts;
 
namespace System.Collections.ObjectModel 
{
 
[Serializable]
internal class ReadOnlyDictionary : IDictionary
{
    private IDictionary m_dictionary; 

    public ReadOnlyDictionary(IDictionary dictionary) 
    { 
        if (dictionary == null)
            throw new ArgumentNullException("dictionary"); 
        System.Diagnostics.Contracts.Contract.EndContractBlock();

        m_dictionary = dictionary;
    } 

    public void Add(TKey key, TValue value) 
    { 
        throw new NotSupportedException();
    } 

    public bool ContainsKey(TKey key)
    {
        return m_dictionary.ContainsKey(key); 
    }
 
    public bool Remove(TKey key) 
    {
        throw new NotSupportedException(); 
    }

    public bool TryGetValue(TKey key, out TValue value)
    { 
        return m_dictionary.TryGetValue(key, out value);
    } 
 
    public TValue this[TKey key]
    { 
        get {
            return m_dictionary[key];
        }
        set { 
            throw new NotSupportedException();
        } 
    } 

    public ICollection Keys 
    {
        get {
            return m_dictionary.Keys;
        } 
    }
 
    public ICollection Values 
    {
        get { 
            return m_dictionary.Values;
        }
    }
 
    public void Add(KeyValuePair pair)
    { 
        throw new NotSupportedException(); 
    }
 
    public void Clear()
    {
        throw new NotSupportedException();
    } 

    public bool Contains(KeyValuePair keyValuePair) 
    { 
        return m_dictionary.Contains(keyValuePair);
    } 

    public void CopyTo(KeyValuePair[] array, Int32 arrayIndex)
    {
        m_dictionary.CopyTo(array, arrayIndex); 
    }
 
    public bool Remove(KeyValuePair keyValuePair) 
    {
        throw new NotSupportedException(); 
    }

    public IEnumerator> GetEnumerator()
    { 
        return m_dictionary.GetEnumerator();
    } 
 
    public Int32 Count
    { 
        get {
            return m_dictionary.Count;
        }
    } 

    public bool IsReadOnly 
    { 
        get {
            return true; 
        }
    }

    IEnumerator System.Collections.IEnumerable.GetEnumerator() 
    {
        return GetEnumerator(); 
    } 
}
 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
/*============================================================
** 
** Class:  ReadOnlyDictionary 
**    A wrapper on a Dictionary that throws if any of the
**    write methods or property setters are called. 
**
===========================================================*/
using System;
using System.Collections.Generic; 
using System.Diagnostics.Contracts;
 
namespace System.Collections.ObjectModel 
{
 
[Serializable]
internal class ReadOnlyDictionary : IDictionary
{
    private IDictionary m_dictionary; 

    public ReadOnlyDictionary(IDictionary dictionary) 
    { 
        if (dictionary == null)
            throw new ArgumentNullException("dictionary"); 
        System.Diagnostics.Contracts.Contract.EndContractBlock();

        m_dictionary = dictionary;
    } 

    public void Add(TKey key, TValue value) 
    { 
        throw new NotSupportedException();
    } 

    public bool ContainsKey(TKey key)
    {
        return m_dictionary.ContainsKey(key); 
    }
 
    public bool Remove(TKey key) 
    {
        throw new NotSupportedException(); 
    }

    public bool TryGetValue(TKey key, out TValue value)
    { 
        return m_dictionary.TryGetValue(key, out value);
    } 
 
    public TValue this[TKey key]
    { 
        get {
            return m_dictionary[key];
        }
        set { 
            throw new NotSupportedException();
        } 
    } 

    public ICollection Keys 
    {
        get {
            return m_dictionary.Keys;
        } 
    }
 
    public ICollection Values 
    {
        get { 
            return m_dictionary.Values;
        }
    }
 
    public void Add(KeyValuePair pair)
    { 
        throw new NotSupportedException(); 
    }
 
    public void Clear()
    {
        throw new NotSupportedException();
    } 

    public bool Contains(KeyValuePair keyValuePair) 
    { 
        return m_dictionary.Contains(keyValuePair);
    } 

    public void CopyTo(KeyValuePair[] array, Int32 arrayIndex)
    {
        m_dictionary.CopyTo(array, arrayIndex); 
    }
 
    public bool Remove(KeyValuePair keyValuePair) 
    {
        throw new NotSupportedException(); 
    }

    public IEnumerator> GetEnumerator()
    { 
        return m_dictionary.GetEnumerator();
    } 
 
    public Int32 Count
    { 
        get {
            return m_dictionary.Count;
        }
    } 

    public bool IsReadOnly 
    { 
        get {
            return true; 
        }
    }

    IEnumerator System.Collections.IEnumerable.GetEnumerator() 
    {
        return GetEnumerator(); 
    } 
}
 
}

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