2011-12-22 23 views
0

我有一個類,我從字符串調用方法名稱與下面的代碼,其中TalentProfile是我的類我運行該方法和返回一個未知的對象類型。滾動瀏覽一個未知類型的列表

public Object RegulatorValue 
public Type RegulatorType 

BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; 

      List<MemberInfo> members = Common.AttributeHelpers.GetFieldAndPropertyList(this.TalentProfile, bindingFlags); 

      foreach (MemberInfo member in members.Where(t => t.Name == methodName)) 
      { 
       this.RegulatorValue = member.GetValue(this.TalentProfile); 
       this.RegulatorType = this.RegulatorValue.GetType(); 
       this.Regulator = methodName; 
      } 

這很好,如果我帶回像字符串的東西,但我有麻煩,當我帶回列表。我有一個特別的方法可以返回一個列表。如果我硬編碼一個foreach尋找phonenumber它效果很好。我希望能夠在不知道列表的類型是什麼類型的情況下瀏覽列表,然後通過列表中的項目的屬性並能夠做到這一點。

+0

對於列表中項目的屬性,您希望能夠做什麼「某事」? – phoog 2011-12-23 03:27:53

回答

0

.net中最基本的收集類型是IEnumerable。將您的值轉換爲IEnumerable並對其進行迭代。

IEnumerable enumerable = (IEnumerable)member.GetValue(this.TalentProfile); 
if (enumerable != null) 
{ 
    IEnumerator enumerator = enumerable.GetEnumerator(); 
    while (enumerator.MoveNext()) 
    { 
     object obj = enumerator.Current; 
     // do something with obj 
    } 
}