2010-04-15 37 views
2

我有一個客戶對象與CustomerContacts.NET反射 - 失控的反映集合的第一個項目,而不強制轉換爲特定集合

IEnumerable<CustomerContact> Contacts { get; set; } 

在一些其他的代碼我使用反射的收集和有屬性的聯繫人屬性

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

我知道聯繫人至少有一個對象,但我怎麼知道它?我不想將它投射到IEnumerable<CustomerContact>,因爲我想讓我的反射方法保持動態。我想通過反射來調用FirstOrDefault(),但由於它是一個擴展方法,所以無法輕鬆完成。

有沒有人有任何想法?

+4

你應該投。 – SLaks 2010-04-15 16:44:18

+0

正如我在問題中提到的,我需要保持動態反射方法。我已經減少了代碼來顯示問題,如果你在上下文中看到它,我懷疑你會這樣建議。 – 2010-04-16 07:30:12

回答

8

如果你真的想避免你的代碼提CustomerContact,你可以這樣做:

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

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

這比我的更好... – 2010-04-15 16:50:26

+0

謝謝,正是我所需要的。 – 2010-04-16 07:28:29