c# - .NET 反射 : how do I loop through an object that is an array type?

标签 c# .net reflection

我有一个返回数组的方法,我将其类型存储在更上方的 Type 对象中。因此,我的代码是:

Type StoryType = Type.GetType("my.ns.Story");
Type StoryTypeArray = Type.GetType("my.ns.Story[]");

object stories = SomeMethodInfo.Invoke(BigFatObject,some_params);

在这个例子中,我知道 stories 是 StoryTypeArray 类型,而我真正想做的是:

foreach (Story instance in stories) { ... }

但是,我不知道如何将对象 stories 变成我可以循环访问并从中提取数据的东西。

有什么想法吗?

最佳答案

根据您的问题,您在编译时是否确实知道 Story 类型并不清楚。如果是,解决方案很简单;只需将 stores 转换为 Story[] 并像往常一样对其进行迭代:

foreach(Story instance in (Story[])stories) { ... }

这也意味着 StoryType 可以写成 typeof(Story)StoryTypeArray 可以写成 typeof(StoryTypeArray[ ]) 而不是使用您正在使用的不太安全的 Type.GetType

如果您在编译时实际上不知道该类型,那么您将无法编写 foreach(Story instance...,因为那不是有效类型。如果你只想遍历数组,那么你可以这样做:

foreach(object item in (Array)stories) { ... }

关于c# - .NET 反射 : how do I loop through an object that is an array type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6269062/

相关文章:

C# 到 C++ 代码(使用 CLI)给出错误

c# - 在发现 'EntityFrameworkConfiguration' 类型之前使用了默认的 DbConfiguration 实例

javascript - 在运行时解释和/或接收 dotNet 代码

java - 如何拦截具有标准 Java 功能(无 AspectJ 等)的方法调用?

c# - Reflection.TargetException问题

c# - MapPoint 2009 负载性能

C# 声明类成员变量自身类型指针

c# - ReportViewer 收到子报表 null 错误

java - 如何使用反射调用外部 jar 内的方法

c# - 复制 TreeView 底层行以创建现有 TreeView 的副本