using System.Diagnostics.CodeAnalysis; namespace SimpleHttpServer.Types; internal class MultiKeyDictionary where K1 : notnull where K2 : notnull { internal readonly Dictionary> 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; } }