ComplexDictionary<TKey, TValue>
Namespace: Murder.Serialization
Assembly: Murder.dll
public class ComplexDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IDictionary<TKey, TValue>, ICollection<T>, IEnumerable<T>, IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>, IReadOnlyCollection<T>, ISerializable, IDeserializationCallback
When serializing dictionaries, System.Text.Json is not able to resolve custom dictionary keys. As a workaround for that, we will implement our own complex dictionary converter that manually deserializes each key and value.
Implements: Dictionary<TKey, TValue>, IDictionary<TKey, TValue>, ICollection<T>, IEnumerable<T>, IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>, IReadOnlyCollection<T>, ISerializable, IDeserializationCallback
⭐ Constructors
public ComplexDictionary<TKey, TValue>()
public ComplexDictionary<TKey, TValue>(IDictionary<TKey, TValue> dictionary)
Parameters
dictionary IDictionary<TKey, TValue>
public ComplexDictionary<TKey, TValue>(IEqualityComparer<T> comparer)
Parameters
comparer IEqualityComparer<T>
⭐ Properties
Comparer
public IEqualityComparer<T> Comparer { get; }
Returns
IEqualityComparer<T>
Count
public virtual int Count { get; }
Returns
int
Item
public virtual TValue Item { get; public set; }
Returns
TValue
Keys
public KeyCollection<TKey, TValue> Keys { get; }
Returns
KeyCollection<TKey, TValue>
Values
public ValueCollection<TKey, TValue> Values { get; }
Returns
ValueCollection<TKey, TValue>
⭐ Methods
ContainsValue(TValue)
public bool ContainsValue(TValue value)
Parameters
value TValue
Returns
bool
Remove(TKey, out TValue&)
public bool Remove(TKey key, TValue& value)
Parameters
key TKey
value TValue&
Returns
bool
TryAdd(TKey, TValue)
public bool TryAdd(TKey key, TValue value)
Parameters
key TKey
value TValue
Returns
bool
GetEnumerator()
public Enumerator<TKey, TValue> GetEnumerator()
Returns
Enumerator<TKey, TValue>
EnsureCapacity(int)
public int EnsureCapacity(int capacity)
Parameters
capacity int
Returns
int
ContainsKey(TKey)
public virtual bool ContainsKey(TKey key)
Parameters
key TKey
Returns
bool
Remove(TKey)
public virtual bool Remove(TKey key)
Parameters
key TKey
Returns
bool
TryGetValue(TKey, out TValue&)
public virtual bool TryGetValue(TKey key, TValue& value)
Parameters
key TKey
value TValue&
Returns
bool
Add(TKey, TValue)
public virtual void Add(TKey key, TValue value)
Parameters
key TKey
value TValue
Clear()
public virtual void Clear()
GetObjectData(SerializationInfo, StreamingContext)
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
Parameters
info SerializationInfo
context StreamingContext
OnDeserialization(Object)
public virtual void OnDeserialization(Object sender)
Parameters
sender Object
TrimExcess()
public void TrimExcess()
TrimExcess(int)
public void TrimExcess(int capacity)
Parameters
capacity int
⚡