.NET反射 - 从反射集合中获取第一个项目,而不转换为特定集合

时间:2010-04-15 16:39:52

标签: c# reflection collections

我有一个带有CustomerContacts集合的Customer对象

IEnumerable<CustomerContact> Contacts { get; set; }

在其他一些代码中,我正在使用Reflection并拥有Contacts属性的PropertyInfo

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

我知道联系人中至少有一个对象,但我该如何解决?我不想把它投射到IEnumerable<CustomerContact>,因为我想让我的反射方法保持动态。我想过通过反射调用FirstOrDefault() - 但是由于它是一个扩展方法,所以不能轻易做到。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:9)

如果您真的想避免在代码中提及CustomerContact,可以这样做:

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

object first = items.Cast<object>().FirstOrDefault();