Internally, the class store the returned data in a datatable /
datareader.
Note that data-readers are generally firehose (one-way) iterators, so
don't really "store" anything. Almost any binding work will involve
reading over the data many times, so datareader probably won't work.
Of course, if you are considering DataTable under the covers, why not
just use DataTable all the way? It will support everything you need
and more. What is your wrapper providing?
You can implement ITypedList in your collection class.
For completeness: for runtime binding, ITypedList is generally
overkill. The binding code checks for a range of things, but in most
cases simply implementing IList and providing a typed indexer
(SomeType this[int index]) is enough; the standard binding code will
assume that this is a list of items, typed by the indexer (i.e.
SomeType). This means that in 2.0, List<Twill do everything you
need. If you want better support for property notification,
BindingList<Twill do what you need.
As for design-time (IDE) binding - your guess is as good as mine! Due
to the instability in the IDE (and too many lost bindings) I gave up
on design-time bindings a long time ago.
Marc