gro*_*wse 7 .net c# reflection
我有一个方法返回一个数组,我已经在Type对象中存储了它的类型.因此,我的代码是:
Type StoryType = Type.GetType("my.ns.Story");
Type StoryTypeArray = Type.GetType("my.ns.Story[]");
object stories = SomeMethodInfo.Invoke(BigFatObject,some_params);
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我知道故事是类型的StoryTypeArray,我真正想要做的是:
foreach (Story instance in stories) { ... }
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何将对象stories转换为我可以循环并从中拉出数据的东西.
有任何想法吗?
从您的问题中不清楚Story在编译时您是否真正知道该类型.如果是,解决方案是微不足道的; 只投stores给Story[]和遍历它像往常一样:
foreach(Story instance in (Story[])stories) { ... }
Run Code Online (Sandbox Code Playgroud)
这也意味着,StoryType可以写成typeof(Story)并StoryTypeArray可以书面typeof(StoryTypeArray[])使用不太安全,而不是Type.GetType您使用.
如果在编译时您实际上并不知道该类型,那么您将无法编写foreach(Story instance...,因为这将不是有效类型.如果您只想迭代数组,那么您可以这样做:
foreach(object item in (Array)stories) { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6110 次 |
| 最近记录: |