在通用列表< T>中获取实际类型的T。 [英] Get actual type of T in a generic List<T>

查看:110
本文介绍了在通用列表< T>中获取实际类型的T。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何在运行时使用反射在泛型列表中获取T的实际类型? 解决方案

你在问什么:


  • 在泛型类型 Blah < T> ,如何获得反射类型 T



    答案: typeof(T)


  • 我有一个包含<$对于某些类型 T ,c $ c> List< T> 。如何通过反射检索 T 类型



    简短回答: myList.GetType()。GetGenericArguments()[0]



    长答案:

      var objectType = myList.GetType(); 
    if(!objectType.IsGenericType()||
    objectType.GetGenericTypeDefinition()!= typeof(List>))
    {
    throw new InvalidOperationException(
    对象不是任何T的List< T>);
    }
    var elementType = objectType.GetGenericArguments()[0];



How do I get the actual type of T in a generic List at run time using reflection?

解决方案

It depends on what exactly you’re asking:

  • While writing code inside a generic type Blah<T>, how do I get the reflection type T?

    Answer: typeof(T)

  • I have an object which contains a List<T> for some type T. How do I retrieve the type T via reflection?

    Short answer: myList.GetType().GetGenericArguments()[0]

    Long answer:

    var objectType = myList.GetType();
    if (!objectType.IsGenericType() ||
        objectType.GetGenericTypeDefinition() != typeof(List<>))
    {
        throw new InvalidOperationException(
            "Object is not of type List<T> for any T");
    }
    var elementType = objectType.GetGenericArguments()[0];
    

这篇关于在通用列表&lt; T&gt;中获取实际类型的T。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆