У меня есть кеш на основе
Dictionary<MethodBase, string>
Ключ отображается из MethodBase.GetCurrentMethod. Все работало нормально, пока методы не были явно объявлены. Но однажды оказалось, что:
Method1<T>(string value)
Делает ту же запись в Словаре, когда T получает абсолютно разные типы.
Так что мой вопрос о лучшем способе кэширования значения для универсальных методов. (Конечно, я могу предоставить оболочку, которая обеспечивает GetCache и равенство встречающихся универсальных типов, но этот способ не выглядит элегантно).
Обновление
Вот что я точно хочу:
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);
}