滚动显示未知类型的列表

时间:2011-12-22 20:04:03

标签: c# generics reflection

我有一个类,我从字符串Name调用一个方法,其中包含以下代码,其中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它很有用。我希望能够浏览列表,而不知道列表的类型是什么,然后浏览列表中项目的属性,并能够做到这一点。

1 个答案:

答案 0 :(得分: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
    }
}