首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测MethodBase的通用参数

检测MethodBase的通用参数
EN

Stack Overflow用户
提问于 2009-12-22 01:51:39
回答 2查看 153关注 0票数 1

这个问题是How to distinguish MethodBase in generics的续篇

简而言之:我需要在Dictionary中区分不同泛型类型替换时调用的相同泛型方法。

代码语言:javascript
复制
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更好的方法了--因为只有这个方法才能探索类型的参数。

EN

回答 2

Stack Overflow用户

发布于 2009-12-22 07:26:01

因为泛型方法只有一个MethodBase,所以没有办法做你想做的事情。如果需要此功能,则需要使用其他类型作为字典的键,因为在调用泛型方法时,MethodBase本身并不包含类型参数。

票数 1
EN

Stack Overflow用户

发布于 2009-12-22 02:11:27

我认为StackTrace不会对您有所帮助:我不会提供有关调用泛型的实际类型的信息。对我来说,最合理的解决方案是创建自己的类,该类将存储有关泛型参数的信息,并将其填充到泛型方法中。

类似于:

static void Method1(T g) { Helper m1 =新的Helper(T.GetType());cachem1 = "m1:“+ typeof(T);}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1941585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档