Casting a base class to a subclass
Posted on 2012-04-10
Using the ADO.Net DataSet designer, I create a DataSet named dsUISupport, with a DataTable named dtCustomer. So, the designer autogenerates a strongly typed class something like this:
dtCustomerDataTable : DataTable
Now I want to add some functionality, so I add my own subclass:
cCustomer : dtCustomerDataTable
Now, what I am doing is, in a Windows Form, I have a DataGrid that uses dtCustomerDataTable as a DataSource (indirectly, via BindingSource).
Now, when the user makes a change to the DataGrid, the DataSource generates a RowChanged event, in the event handler, I use a dtCustomerDataTable.GetChanges() to get a dtCustomerDataTable object with the changes that were made. Now, I want to cast this object to a cCustomer object, which is my own subclass. I understand I can't do this directly, because it isn't really a cCustomer object. So, perhaps casting is not the word. But I think that should in some way be able to get a CCustomer object with the same dtCustomerDataTable base class, if I am prepared to do some fixups. Could I new a cCustomer object and then somehow assign the dtCustomer DataTable to the base class? Or should I do some kind of DataTable.Copy to copy over the members of the base class? Please advise.