Как отличить MethodBase в дженериках

У меня есть кеш на основе

Dictionary

Ключ отображается из MethodBase.GetCurrentMethod. Все работало нормально, пока методы не были явно объявлены. Но однажды оказалось, что:

Method1(string value)

Делает ту же запись в словаре, когда T получает абсолютно разные типы.

Поэтому мой вопрос о том, как лучше кэшировать значения для универсальных методов. (Конечно, я могу предоставить оболочку, которая обеспечивает GetCache и равенство встречающихся универсальных типов, но этот способ невыглядит элегантно).

Обновить Вот что я точно хочу:

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

Ответы на вопрос(2)

Ваш ответ на вопрос