23 lines
710 B
C#
23 lines
710 B
C#
using System.Diagnostics.CodeAnalysis;
|
|
|
|
namespace SimpleHttpServer.Types;
|
|
internal class MultiKeyDictionary<K1, K2, V> where K1 : notnull where K2 : notnull {
|
|
internal readonly Dictionary<K1, Dictionary<K2, V>> backingDict = new();
|
|
public MultiKeyDictionary() { }
|
|
|
|
public void Add(K1 k1, K2 k2, V value) {
|
|
if (!backingDict.TryGetValue(k1, out var d2))
|
|
d2 = new();
|
|
d2.Add(k2, value);
|
|
backingDict[k1] = d2;
|
|
}
|
|
|
|
public bool TryGetValue(K1 k1, K2 k2, [MaybeNullWhen(false)] out V value) {
|
|
if (backingDict.TryGetValue(k1, out var d2) && d2.TryGetValue(k2, out value))
|
|
return true;
|
|
|
|
value = default;
|
|
return false;
|
|
}
|
|
}
|