Как я могу сделать функцию, которая может принимать SQLDataReader и DBDataRecord в качестве параметра? - PullRequest
2 голосов
/ 22 июня 2009

У меня есть функция, которая обычно вызывается во время цикла внутри 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 и вызывает первую перегрузку.

Есть идеи?
Спасибо!

1 Ответ

4 голосов
/ 22 июня 2009

Возможно IDataRecord?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...