Inherit from System.Data.DataRow; the DataRowBuilder dilemma
I need to isolate access to my data access layer (DAL) from my user interface layer through a business logic layer (BLL). I love the way ADO.NET DataTables and DataRows work and need to leverage all the built-in binding that they do, so I want to use DataSets as the foundation of my DAL. To fully isolate the user interface from the DAL the BLL needs to subclass the DataTable and DataRow objects.
It does not appear that it is possible to inherit from DataRow due to a dependency on a non-constructible, non-inheritable DataRowBuilder class. I'm OK with creating my own version of DataRowBuilder if that's what it takes.
Code sample based on Northwind is below. The Northwind dataset was built with the VS drag-and-drop interface, by simply dropping the Shippers table. Please disregard the implementation of GetShipper, it is not the point of the example.
The point of the example, and the essence of my question, is how to make the BLL.Shipper class (shown below) inherit from the DAL's Northwind.ShipperRow.
-- Craig
PS: I've seen a tendency for people to assert "why do you want to do that" in response to these type of questions. I can explain if necessary but it should be enough to want to separate the UI layer from the data access layer and have it instead use a business logic layer exclusively.
Namespace BLL Public Class ShipperEntity Public Function GetShipper(ByVal ShipperID As Integer) As Shipper Dim ad As New NorthwindTableAdapters.ShippersTableAdapter Dim t As Northwind.ShippersDataTable = ad.GetData Dim r As Northwind.ShippersRow = _ DirectCast(t.Rows(ShipperID - 1), Shipper) Return DirectCast(r, Shipper) End Function End Class Public Class Shipper Inherits Northwind.ShippersRow End ClassEnd Namespace