在通用List <T>中获取实际的T类型

Joh*_*ert 4 c# generics reflection

如何使用反射在运行时获取通用List中的实际T类型?

Tim*_*mwi 8

这取决于你究竟在问什么:

  • 在泛型类型中编写代码时Blah<T>,如何获取反射类型T

    回答: typeof(T)

  • 我有一个包含List<T>某种类型的对象T.如何T通过反射检索类型?

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

    答案很长:

    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];
    
    Run Code Online (Sandbox Code Playgroud)