The data access classes are responsible for the creation of their data readers (i.e. *Command.ExecuteReader() ). You can't do anything with a data reader by itself, it must come from the execution of a query. In the case of the SqlDataReader, and most likely the other flavors, there is no public constructor which renders the class non-derivable.
What are you trying to achieve by deriving this class?