0
我試圖創建一個泛型參數的方法:如何檢查C#泛型類型是否爲集合(IEnumerable)?
public List<DTListItem> MapDTListResponse(List<App.Order.DT> dtList)
{
return dtList.Select(MapDTListResponse).ToList();
}
public DTListItem MapDTListResponse(App.Order.DT dt)
{
return RecMap<DTListItem, App.Order.DT>(dt);
}
private T RecMap<T,TU>(TU newObject)
{
if (TU is IEnumerable) // this doesn't work; what do i check for here
{
//Also, how do i get this bit to replicate MapDTListReponse
newObject.Select(RecMap).ToList();
}
else
{
return Mapper.Map<T>(newObject);
}
}
正如你可以看到,第一種方法需要和返回的集合,只是調用第二種方法(具有相同的名稱但不同的簽名)集合中的每個元素。
我想創建一個通用的方法來處理這兩種情況。如果集合通過,它應該自動調用。爲此,我需要檢查,如果該類型是IEnumerable
但T is IEnumerable
有以下錯誤
TU行是一個類型,是不是在給定的範圍內有效。
此外,newObject.Select(Map).ToList();
有以下錯誤
TU不包含定義選擇
謝謝,T帽子似乎有幫助。我已經將if循環更改爲if(typeof(IEnumerable).IsAssignableFrom(typeof(TU)))',但是它仍然不讓我調用IEnumerable.select方法(我的問題的第二部分)。 – Ash
@AshwinNair你是對的,看看編輯。 –
在將'TU'作爲'IEnumerable'投下之後,'select'下的錯誤消失了,但是我無法複製第一個方法的功能,因爲它現在試圖返回一個'List'。我猜測沒有辦法用一種方法來做到這一點。 –
Ash