.NET отражение - получение первого элемента из отраженной коллекции без приведения к конкретной коллекции - PullRequest
2 голосов
/ 15 апреля 2010

У меня есть объект Customer с коллекцией контактов клиентов

IEnumerable<CustomerContact> Contacts { get; set; }

В другом коде я использую Reflection и обладаю свойством PropertyInfo of Contacts

var contacts = propertyInfo.GetValue(customerObject, null);

Я знаю, что в контактах есть хотя бы один объект, но как мне его достать? Я не хочу приводить его к IEnumerable<CustomerContact>, потому что я хочу, чтобы мой метод отражения был динамичным. Я думал о вызове FirstOrDefault () с помощью отражения - но не могу сделать это легко, потому что это метод расширения.

У кого-нибудь есть идеи?

1 Ответ

9 голосов
/ 15 апреля 2010

Если вы действительно хотите избежать упоминания CustomerContact в своем коде, вы можете сделать это:

IEnumerable items = (IEnumerable)propertyInfo.GetValue(customerObject, null);

object first = items.Cast<object>().FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...