首页 > 解决方案 > 如何找到 IEnumerable元素类型?

问题描述

如果我尝试

List<dynamic> list = new List<dynamic> { "blah" };
var type = list.GetType().GetGenericArguments()[0];

我得到 'object' 而不是string. 如何获得“真实”类型?

标签: c#.net

解决方案


尝试先访问该值,然后确定类型。

List<dynamic> list = new List<dynamic> { "blah", 15 };
var type = list[0].GetType();
Console.WriteLine(type); // prints out System.String

type = list[1].GetType();
Console.WriteLine(type); // prints out System.Int32

如果您想要所有类型的列表,请使用 Linq:

var types = list.Select(item => item.GetType());

// print out
foreach (var t in types) {
    Console.WriteLine(t);
}

推荐阅读