The Labs \ Source Viewer \ SSCLI \ System.Collections.Generic \ System_CollectionDebugView

  1. // ==++==
  2. //
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. //
  14. // ==--==
  15. /*=============================================================================
  16. **
  17. **
  18. **
  19. ** Purpose: DebugView class for generic collections
  20. **
  21. ** Date: Mar 09, 2004
  22. **
  23. =============================================================================*/
  24. namespace System.Collections.Generic
  25. {
  26.     using System;
  27.     using System.Security.Permissions;
  28.     using System.Diagnostics;
  29.    
  30.     internal sealed class System_CollectionDebugView<T>
  31.     {
  32.         private ICollection<T> collection;
  33.        
  34.         public System_CollectionDebugView(ICollection<T> collection)
  35.         {
  36.             if (collection == null) {
  37.                 throw new ArgumentNullException("collection");
  38.             }
  39.            
  40.             this.collection = collection;
  41.         }
  42.        
  43.         [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
  44.         public T[] Items {
  45.             get {
  46.                 T[] items = new T[collection.Count];
  47.                 collection.CopyTo(items, 0);
  48.                 return items;
  49.             }
  50.         }
  51.     }
  52.    
  53.     internal sealed class System_QueueDebugView<T>
  54.     {
  55.         private Queue<T> queue;
  56.        
  57.         public System_QueueDebugView(Queue<T> queue)
  58.         {
  59.             if (queue == null) {
  60.                 throw new ArgumentNullException("queue");
  61.             }
  62.            
  63.             this.queue = queue;
  64.         }
  65.        
  66.         [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
  67.         public T[] Items {
  68.             get { return queue.ToArray(); }
  69.         }
  70.     }
  71.    
  72.     internal sealed class System_StackDebugView<T>
  73.     {
  74.         private Stack<T> stack;
  75.        
  76.         public System_StackDebugView(Stack<T> stack)
  77.         {
  78.             if (stack == null) {
  79.                 throw new ArgumentNullException("stack");
  80.             }
  81.            
  82.             this.stack = stack;
  83.         }
  84.        
  85.         [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
  86.         public T[] Items {
  87.             get { return stack.ToArray(); }
  88.         }
  89.     }
  90.    
  91.     internal sealed class System_DictionaryDebugView<K, V>
  92.     {
  93.         private IDictionary<K, V> dict;
  94.        
  95.         public System_DictionaryDebugView(IDictionary<K, V> dictionary)
  96.         {
  97.             if (dictionary == null)
  98.                 throw new ArgumentNullException("dictionary");
  99.            
  100.             this.dict = dictionary;
  101.         }
  102.        
  103.         [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
  104.         public KeyValuePair<K, V>[] Items {
  105.             get {
  106.                 KeyValuePair<K, V>[] items = new KeyValuePair<K, V>[dict.Count];
  107.                 dict.CopyTo(items, 0);
  108.                 return items;
  109.             }
  110.         }
  111.     }
  112.     internal sealed class System_DictionaryKeyCollectionDebugView<TKey, TValue>
  113.     {
  114.         private ICollection<TKey> collection;
  115.        
  116.         public System_DictionaryKeyCollectionDebugView(ICollection<TKey> collection)
  117.         {
  118.             if (collection == null)
  119.                 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection);
  120.            
  121.             this.collection = collection;
  122.         }
  123.        
  124.         [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
  125.         public TKey[] Items {
  126.             get {
  127.                 TKey[] items = new TKey[collection.Count];
  128.                 collection.CopyTo(items, 0);
  129.                 return items;
  130.             }
  131.         }
  132.     }
  133.    
  134.     internal sealed class System_DictionaryValueCollectionDebugView<TKey, TValue>
  135.     {
  136.         private ICollection<TValue> collection;
  137.        
  138.         public System_DictionaryValueCollectionDebugView(ICollection<TValue> collection)
  139.         {
  140.             if (collection == null)
  141.                 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection);
  142.            
  143.             this.collection = collection;
  144.         }
  145.        
  146.         [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
  147.         public TValue[] Items {
  148.             get {
  149.                 TValue[] items = new TValue[collection.Count];
  150.                 collection.CopyTo(items, 0);
  151.                 return items;
  152.             }
  153.         }
  154.     }
  155.    
  156. }

Developer Fusion