这个问题是How to distinguish MethodBase in generics的续篇
简而言之:我需要在Dictionary中区分不同泛型类型替换时调用的相同泛型方法。
static Dictionary<MethodBase, string> cache = new Dictionary<MethodBase, string>();
static void Method1<T>(T g)
{
MethodBase m1 = MethodBase.GetCurrentMethod();
cache[m1] = "m1:" + typeof(T);
}因此,为了逐个比较MethodBase参数,我重写了IEqualityComparer。在调试期间,我想知道没有办法检测泛型方法的实型参数,无论是GetGenericArguments还是GetParameters都不提供实型调用。我说的对吗?如果是这样的话,我看不到比第一行Environment.StackTrace更好的方法了--因为只有这个方法才能探索类型的参数。
发布于 2009-12-22 07:26:01
因为泛型方法只有一个MethodBase,所以没有办法做你想做的事情。如果需要此功能,则需要使用其他类型作为字典的键,因为在调用泛型方法时,MethodBase本身并不包含类型参数。
发布于 2009-12-22 02:11:27
我认为StackTrace不会对您有所帮助:我不会提供有关调用泛型的实际类型的信息。对我来说,最合理的解决方案是创建自己的类,该类将存储有关泛型参数的信息,并将其填充到泛型方法中。
类似于:
static void Method1(T g) { Helper m1 =新的Helper(T.GetType());cachem1 = "m1:“+ typeof(T);}
https://stackoverflow.com/questions/1941585
复制相似问题