Я не вижу причин, почему она должна потерпеть неудачу, если FetchData
не несобственные данные.
Возможность I: FetchData
возвращает значение null, и поэтому параметр типа не может быть вычислен (значение null не имеет типа в C#).
Возможность II: FetchData
не возвращает надлежащего List<T>
объект.
Я бы перепроектировать вещи, как:
private static void GetData()
{
dynamic dynamicList = FetchData();
if (dynamicList is IEnumerable) //handles null as well
FilterAndSortDataList(Enumerable.ToList(dynamicList));
//throw; //better meaning here.
}
Он проверяет, является ли возвращаемый тип IEnumerable
(в надежде, что это какой-то IEnumerable<T>
- мы не можем проверить, если он IEnumerable<T>
сам, так как мы не имеем T
с нами. Это достойное предположение), в этом случае мы преобразуем полученную последовательность в List<T>
, чтобы убедиться, что мы проходим List<T>
. dynamic
не работает с методами расширения, поэтому мы должны назвать Enumerable.ToList
к сожалению. В случае, если dynamicList
является нулевым или не перечислимым, это дает ему лучший смысл, чем некоторая ошибка привязки времени выполнения.
Нужно на самом деле * быть * список для работы. Тот факт, что он дает эту ошибку, означает, что объект фактически не является списком. – Servy
Здесь может быть какая-то помощь: http://stackoverflow.com/q/5014235 и здесь: http://stackoverflow.com/questions/513952 –
Какой объект фактически находится в переменной 'dynamic'? Другими словами, что возвращает 'FetchData()'? –