Jak odróżnić MethodBase od generyków

Mam na podstawie pamięci podręcznej

Dictionary<MethodBase, string>

Klucz jest renderowany z MethodBase.GetCurrentMethod. Wszystko działało dobrze, dopóki metody nie zostały wyraźnie zadeklarowane. Ale pewnego dnia wydaje się, że:

Method1<T>(string value)

Wprowadza ten sam wpis w słowniku, gdy T dostaje absolutnie różne typy.

Moje pytanie dotyczy więc lepszego sposobu buforowania wartości metod ogólnych. (Oczywiście mogę dostarczyć opakowanie, które zapewnia GetCache, a równość napotyka typy ogólne, ale ten sposób nie wygląda elegancko).

Aktualizacja Oto czego dokładnie chcę:

static Dictionary<MethodBase, string> cache = new Dictionary<MethodBase, string>();
static void Method1<T>(T g) 
{
    MethodBase m1 = MethodBase.GetCurrentMethod();
    cache[m1] = "m1:" + typeof(T);
}
public static void Main(string[] args)
{
    Method1("qwe");
    Method1<Stream>(null);
    Console.WriteLine("===Here MUST be exactly 2 entry, but only 1 appears==");
    foreach(KeyValuePair<MethodBase, string> kv in cache)
        Console.WriteLine("{0}--{1}", kv.Key, kv.Value);
}

questionAnswers(2)

yourAnswerToTheQuestion