Multi-touches dictionnaires (d'un autre genre) en C#?

Bâtiment sur cette question, est-il une solution simple pour avoir un multi-clés dictionnaire, où clé individuellement peut être utilisée pour identifier la valeur?

ie.

MultikeyDictionary<TKey1, TKey2, TValue> foo;
foo.Add(key1, key2, value);
myValue = foo[key1];
//value == myValue
foo.Remove(key2);
myValue = foo[key1]; //invalid, Exception or null returned

OriginalL'auteur Matthew Scharley | 2009-07-23