diff --git a/DICUI.Library/Utilities/IniFile.cs b/DICUI.Library/Utilities/IniFile.cs index ac2f4120..62bff5a4 100644 --- a/DICUI.Library/Utilities/IniFile.cs +++ b/DICUI.Library/Utilities/IniFile.cs @@ -1,13 +1,14 @@ using System; +using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; namespace DICUI.Utilities { - public class IniFile + public class IniFile : IDictionary { - private Dictionary _keyValuePairs; + private Dictionary _keyValuePairs = new Dictionary(); public string this[string key] { @@ -37,7 +38,6 @@ namespace DICUI.Utilities /// public IniFile() { - _keyValuePairs = new Dictionary(); } /// @@ -56,14 +56,6 @@ namespace DICUI.Utilities this.Parse(stream); } - /// - /// Check if the key exists in the INI file - /// - public bool ContainsKey(string key) - { - return _keyValuePairs.ContainsKey(key.ToLowerInvariant()); - } - /// /// Add or update a key and value to the INI file /// @@ -230,5 +222,75 @@ namespace DICUI.Utilities return true; } + + #region IDictionary Impelementations + + public ICollection Keys => ((IDictionary)_keyValuePairs).Keys; + + public ICollection Values => ((IDictionary)_keyValuePairs).Values; + + public int Count => ((ICollection>)_keyValuePairs).Count; + + public bool IsReadOnly => ((ICollection>)_keyValuePairs).IsReadOnly; + + public void Add(string key, string value) + { + ((IDictionary)_keyValuePairs).Add(key.ToLowerInvariant(), value); + } + + bool IDictionary.Remove(string key) + { + return ((IDictionary)_keyValuePairs).Remove(key.ToLowerInvariant()); + } + + public bool TryGetValue(string key, out string value) + { + return ((IDictionary)_keyValuePairs).TryGetValue(key.ToLowerInvariant(), out value); + } + + public void Add(KeyValuePair item) + { + var newItem = new KeyValuePair(item.Key.ToLowerInvariant(), item.Value); + ((ICollection>)_keyValuePairs).Add(newItem); + } + + public void Clear() + { + ((ICollection>)_keyValuePairs).Clear(); + } + + public bool Contains(KeyValuePair item) + { + var newItem = new KeyValuePair(item.Key.ToLowerInvariant(), item.Value); + return ((ICollection>)_keyValuePairs).Contains(newItem); + } + + public bool ContainsKey(string key) + { + return _keyValuePairs.ContainsKey(key.ToLowerInvariant()); + } + + public void CopyTo(KeyValuePair[] array, int arrayIndex) + { + ((ICollection>)_keyValuePairs).CopyTo(array, arrayIndex); + } + + public bool Remove(KeyValuePair item) + { + var newItem = new KeyValuePair(item.Key.ToLowerInvariant(), item.Value); + return ((ICollection>)_keyValuePairs).Remove(newItem); + } + + public IEnumerator> GetEnumerator() + { + return ((IEnumerable>)_keyValuePairs).GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return ((IEnumerable)_keyValuePairs).GetEnumerator(); + } + + #endregion } }