object1.DataSource = typeof(SomeClass);
object2.DataSource = getSomeObject();
When you set the
BindingSource.DataSource property to a type the control is bound to an empty
IBindingList with elements of that type. So the data source will initially have no items. If on the other hand you set the
DataSource to a collection of items the data source will be bound to an
IBindingList with these items.
So assigning a type gives you an empty list of items while assigning a collection gives you a list with items from the collection.
If you assign a base type you get an empty list of base type items. The data binding does not "know" about any derived classes.