我有一个带有CustomerContacts集合的Customer对象
IEnumerable<CustomerContact> Contacts { get; set; }
在其他一些代码中,我正在使用Reflection并拥有Contacts属性的PropertyInfo
var contacts = propertyInfo.GetValue(customerObject, null);
我知道联系人中至少有一个对象,但我该如何解决?我不想把它投射到IEnumerable<CustomerContact>
,因为我想让我的反射方法保持动态。我想过通过反射调用FirstOrDefault() - 但是由于它是一个扩展方法,所以不能轻易做到。
有没有人有任何想法?
答案 0 :(得分:9)
如果您真的想避免在代码中提及CustomerContact
,可以这样做:
IEnumerable items = (IEnumerable)propertyInfo.GetValue(customerObject, null);
object first = items.Cast<object>().FirstOrDefault();