繁体   English   中英

.NET 反思:我如何循环通过一个数组类型的 object?

[英].NET Reflection: how do I loop through an object that is an array type?

我有一个返回数组的方法,我将其类型存储在 object 类型中。 因此,我为此拥有的代码是:

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) { ... }

但是,我不知道如何将 object 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) { ... }

如果由于某些原因你必须通过反射来做到这一点,这里是解决方案:

a.GetType().GetMethod("Get").Invoke(a, new object[]{0})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM