要从反射检索到的System.Object中获取List<int>,可以按照以下步骤进行:
以下是一个示例代码,演示如何通过反射获取List<int>对象:
using System;
using System.Collections.Generic;
using System.Reflection;
public class Program
{
public static void Main()
{
// 创建一个List<int>对象
List<int> myList = new List<int> { 1, 2, 3, 4, 5 };
// 使用反射获取List<int>的类型信息
Type listType = myList.GetType();
// 判断类型是否为List<int>或其派生类型
if (listType.IsGenericType && listType.GetGenericTypeDefinition() == typeof(List<>))
{
// 获取List<int>的元素类型
Type elementType = listType.GetGenericArguments()[0];
// 判断元素类型是否为int
if (elementType == typeof(int))
{
// 使用反射调用List<int>的相关方法或访问其属性
MethodInfo countMethod = listType.GetMethod("get_Count");
PropertyInfo indexerProperty = listType.GetProperty("Item");
// 获取List<int>的元素个数
int count = (int)countMethod.Invoke(myList, null);
Console.WriteLine("List<int>元素个数:" + count);
// 遍历并输出List<int>的元素
for (int i = 0; i < count; i++)
{
int element = (int)indexerProperty.GetValue(myList, new object[] { i });
Console.WriteLine("List<int>元素[" + i + "]:" + element);
}
}
}
}
}
这段代码首先创建了一个List<int>对象,然后使用反射获取其类型信息。接着判断类型是否为List<int>或其派生类型,并获取List<int>的元素类型。如果元素类型为int,则使用反射调用List<int>的相关方法和访问其属性,获取List<int>的元素个数和元素值。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云