Common
A library of common classes.
HashMapBase.cs
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.Runtime.Serialization;
5
7{
11 [DataContract(Name = "HashMap", Namespace = Constants.DataContractNamespace)]
12 public abstract class HashMapBase<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, IDictionary<TKey, TValue>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, IReadOnlyDictionary<TKey, TValue>, ICollection
13 {
17 public Dictionary<TKey, TValue> Dictionary { get; protected set; } = new Dictionary<TKey, TValue>();
18
20 public TValue this[TKey key] { get => Dictionary[key]; set => Dictionary[key] = value; }
21
23 public int Count => Dictionary.Count;
24
26 public bool IsReadOnly => ((ICollection<KeyValuePair<TKey, TValue>>)Dictionary).IsReadOnly;
27
29 public Dictionary<TKey, TValue>.KeyCollection Keys => Dictionary.Keys;
30
32 ICollection<TKey> IDictionary<TKey, TValue>.Keys => Dictionary.Keys;
33
35 public Dictionary<TKey, TValue>.ValueCollection Values => Dictionary.Values;
36
38 ICollection<TValue> IDictionary<TKey, TValue>.Values => Dictionary.Values;
39
41 public bool IsSynchronized => ((ICollection)Dictionary).IsSynchronized;
42
44 public object SyncRoot => ((ICollection)Dictionary).SyncRoot;
45
47 IEnumerable<TKey> IReadOnlyDictionary<TKey, TValue>.Keys => ((IReadOnlyDictionary<TKey, TValue>)Dictionary).Keys;
48
50 IEnumerable<TValue> IReadOnlyDictionary<TKey, TValue>.Values => ((IReadOnlyDictionary<TKey, TValue>)Dictionary).Values;
51
53 public void Add(KeyValuePair<TKey, TValue> item)
54 {
55 ((ICollection<KeyValuePair<TKey, TValue>>)Dictionary).Add(item);
56 }
57
59 public void Add(TKey key, TValue value)
60 {
61 Dictionary.Add(key, value);
62 }
63
65 public void Clear()
66 {
67 Dictionary.Clear();
68 }
69
71 public bool Contains(KeyValuePair<TKey, TValue> item)
72 {
73 return ((ICollection<KeyValuePair<TKey, TValue>>)Dictionary).Contains(item);
74 }
75
77 public bool ContainsKey(TKey key)
78 {
79 return Dictionary.ContainsKey(key);
80 }
81
83 public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
84 {
85 ((ICollection<KeyValuePair<TKey, TValue>>)Dictionary).CopyTo(array, arrayIndex);
86 }
87
89 public void CopyTo(Array array, int index)
90 {
91 ((ICollection)Dictionary).CopyTo(array, index);
92 }
93
95 public Dictionary<TKey, TValue>.Enumerator GetEnumerator()
96 {
97 return Dictionary.GetEnumerator();
98 }
99
101 IEnumerator<KeyValuePair<TKey, TValue>> IEnumerable<KeyValuePair<TKey, TValue>>.GetEnumerator()
102 {
103 return Dictionary.GetEnumerator();
104 }
105
107 public bool Remove(KeyValuePair<TKey, TValue> item)
108 {
109 return ((ICollection<KeyValuePair<TKey, TValue>>)Dictionary).Remove(item);
110 }
111
113 public bool Remove(TKey key)
114 {
115 return Dictionary.Remove(key);
116 }
117
119 public bool TryGetValue(TKey key, out TValue value)
120 {
121 return Dictionary.TryGetValue(key, out value);
122 }
123
125 IEnumerator IEnumerable.GetEnumerator()
126 {
127 return ((IEnumerable)Dictionary).GetEnumerator();
128 }
129 }
130}
The base class for dictionaries with custom data contract serialization.
Definition: HashMapBase.cs:13
bool Contains(KeyValuePair< TKey, TValue > item)
Definition: HashMapBase.cs:71
void Add(TKey key, TValue value)
Definition: HashMapBase.cs:59
Dictionary< TKey, TValue >.KeyCollection Keys
Definition: HashMapBase.cs:29
void CopyTo(Array array, int index)
Definition: HashMapBase.cs:89
Dictionary< TKey, TValue >.ValueCollection Values
Definition: HashMapBase.cs:35
bool Remove(KeyValuePair< TKey, TValue > item)
Definition: HashMapBase.cs:107
Dictionary< TKey, TValue >.Enumerator GetEnumerator()
Definition: HashMapBase.cs:95
bool TryGetValue(TKey key, out TValue value)
Definition: HashMapBase.cs:119
Dictionary< TKey, TValue > Dictionary
The underlying dictionary.
Definition: HashMapBase.cs:17
void CopyTo(KeyValuePair< TKey, TValue >[] array, int arrayIndex)
Definition: HashMapBase.cs:83
void Add(KeyValuePair< TKey, TValue > item)
Definition: HashMapBase.cs:53