[英].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.