У меня есть функция, которая обычно вызывается во время цикла внутри SqlDataReader, которая будет брать данные из этого SqlDataReader и делать с ним некоторые вещи.
Теперь мне нужно иметь возможность также вызывать его из объекта повторителя данных, который также связан с SqlDataReader ...
В элементе управления DataBound в событии «OnDataBinding» я обычно делаю это при привязке к DataSet:
RepeaterItem Binder = (RepeaterItem) Me.NamingContainer;
DataRowView rowResult = (DataRowView) Binder.DataItem;
Теперь, поскольку я привязан к DataReader, я попытался:
SqlDataReader rowResult = (SqlDataReader) Binder.DataItem;
И это не работает, потому что, очевидно, DataItem имеет тип DataRecordInternal
Я был в состоянии привести его к «DbDataRecord», и я могу получить доступ к его значениям, но я, очевидно, не могу передать его в качестве параметра функции, которая ожидает SqlDataReader ...
Я также не могу найти какой-либо базовый класс или интерфейс, который у них обоих общий, для использования в качестве параметра ...
Что меня больше всего озадачивает, так это то, как через привязку данных SqlDataReader «превращается» в DbDataRecord. Если бы я мог сделать это внутри моей функции, у меня могло бы быть две перегрузки: одна, которая принимает DbDataRecord и выполняет свою работу, и другая, которая принимает SqlDataReader, «преобразует его» в DbDataRecord и вызывает первую перегрузку.
Есть идеи?
Спасибо!