首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过反射获取泛型参数的类型

如何通过反射获取泛型参数的类型
EN

Stack Overflow用户
提问于 2012-09-08 11:45:03
回答 1查看 583关注 0票数 1

我需要通过反射获取泛型参数的泛型类型。而不是类型{ Name="T“;FullName=null }

代码语言:javascript
复制
public void Sample<T>(T i, object o)
{
    MethodBase basee = MethodBase.GetCurrentMethod();
    Type[] types = basee.GetGenericArguments();
}

但是我不能使用typeof(T),因为我使用的是反射

有没有办法(使用反射)来获取泛型参数的类型。

代码语言:javascript
复制
// in this case i should get (Type) { Name="Int32" ; FullName="System.Int32" }
myClassObj.Sample(10, new object());

另外,我想知道如何调用typeof(T) ex调用的方法:

代码语言:javascript
复制
// in Il code I see that the compiler use:
// ldtoken !!T => this should get the RuntimeTypeHandle needed as parameter
// System.Type::GetTypeFromHandle(valuetype System.RuntimeTypeHandle)
Type t = Type.GetTypeFromHandle( ? ? ? ); 

如何从T泛型参数中获取RuntimTypeHandle

EN

回答 1

Stack Overflow用户

发布于 2012-09-08 12:06:17

我不知道这是什么意思,但是

代码语言:javascript
复制
public void Sample<T>(T i, object o)
{
  Type t = typeof(T);
  if (i != null)
  {
    t = i.GetType();
  }

  // Do whatever with t
  Console.WriteLine(t);
}

然后你就得到了运行时类型(如果有一个对象),否则你就得到了静态类型。

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

https://stackoverflow.com/questions/12327834

复制
相关文章

相似问题

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