假设我在类或方法中有一个泛型成员,如下所示:
public class Foo<T> { public List<T> Bar { get; set; } public void Baz() { // get type of T } }
当我实例化类时,T变成MyTypeObject1,所以类有一个通用列表属性:List<MyTypeObject1>。这同样适用于非泛型类中的泛型方法:
T
MyTypeObject1
List<MyTypeObject1>
public class Foo { public void Bar<T>() { var baz = new List<T>(); // get type of T } }
我想知道我的班级列表包含什么类型的对象。那么T调用的列表属性Bar或局部变量baz包含什么类型的呢?
Bar
baz
我不能这样做Bar[0].GetType(),因为列表可能包含零个元素。我该怎么做?
Bar[0].GetType()
如果我理解正确,您的列表具有与容器类本身相同的类型参数。如果是这种情况,那么:
Type typeParameterType = typeof(T);
如果您有幸拥有object作为类型参数。
object