小编典典

如何从泛型类或方法的成员中获取 T 的类型

all

假设我在类或方法中有一个泛型成员,如下所示:

public class Foo<T>
{
    public List<T> Bar { get; set; }

    public void Baz()
    {
        // get type of T
    }   
}

当我实例化类时,T变成MyTypeObject1,所以类有一个通用列表属性:List<MyTypeObject1>。这同样适用于非泛型类中的泛型方法:

public class Foo
{
    public void Bar<T>()
    {
        var baz = new List<T>();

        // get type of T
    }
}

我想知道我的班级列表包含什么类型的对象。那么T调用的列表属性Bar或局部变量baz包含什么类型的呢?

我不能这样做Bar[0].GetType(),因为列表可能包含零个元素。我该怎么做?


阅读 105

收藏
2022-03-02

共1个答案

小编典典

如果我理解正确,您的列表具有与容器类本身相同的类型参数。如果是这种情况,那么:

Type typeParameterType = typeof(T);

如果您有幸拥有object作为类型参数。

2022-03-02