Этот вопрос является продолжением Как отличить MethodBase в генериках
Вкратце: мне нужно различать в словаре один и тот же универсальный метод, когда он вызывается для замены различных универсальных типов.
static Dictionary<MethodBase, string> cache = new Dictionary<MethodBase, string>();
static void Method1<T>(T g)
{
MethodBase m1 = MethodBase.GetCurrentMethod();
cache[m1] = "m1:" + typeof(T);
}
Итак, я переопределил IEqualityComparer, чтобы сравнить аргумент MethodBase с аргументом. И во время отладки меня удивило, что нет способа обнаружить реальный тип аргумента универсального метода, ни GetGenericArguments, ни GetParameters не предоставляют реальный тип вызова. Я прав?
Если это так, я не вижу другого пути, кроме сравнения по первой строке Environment.StackTrace - потому что только этот метод исследует тип аргумента.