Прокрутка списка с неизвестным типом - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть класс, который я вызываю метод из строки 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 для поиска номера телефона, он прекрасно работает. Я хотел бы иметь возможность просматривать список, не зная, к какому типу составлен список, а затем просматривать свойства элемента в списке и иметь возможность что-то с этим делать.

1 Ответ

0 голосов
/ 24 декабря 2011

Самый базовый тип коллекции в .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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...