У меня странное поведение в нашем приложении. Я хочу перебрать строки таблицы (DataTable
). Я хотел использовать метод расширения AsEnumerable()
из класса DataTableExtensions
. Что-то вроде:
foreach(var thing in table.AsEnumerable())
{
...
}
Когда он компилируется, он жалуется, что мне нужно сослаться на некоторые ESRI DLL (приложение ГИС). Немного покопавшись, я нашел несколько методов расширения из указанной DLL, которые расширяют некоторые типы из ESRI (например, IEnumField
, IEnumLayer
и т. д.).
Очевидно, что DataTable
не похож на них, и я не могу понять, почему он пытается привязаться к AsEnumerable(this IEnumLayer)
вместо AsEnumerable(this DataTable)
. Забавно также то, что мы используем Resharper (отличный инструмент!), и Resharper на нашей стороне: когда вы переходите к определению, вы переходите к AsEnumerable(this DataTable)
в обозревателе объектов.
Я не могу опубликовать здесь много примеров кода, не опубликовав тысячи строк проприетарного кода, поэтому я просто ищу у меня была такая же проблема однажды, и я исправил ее с помощью... типа ответа.
Очевидным решением было удалить любую ссылку на методы расширения, удалив все операторы использования для этого пространства имен. Но у этого есть неприятный побочный эффект, вынуждающий нас полностью квалифицировать любое объявление типа. Не красиво.
Спасибо заранее за любые данные.
Эрик.
DataTable
и вызватьAsEnumerable
. Если бы вы могли опубликовать точное сообщение об ошибке от компилятора, это очень помогло бы. - person Jon Skeet   schedule 30.12.2009