簡體   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