Is there a general consensus out there for when working with library's that call stored procedures? Return datasets or use sqldatareader to populate custom objects?

Is the cost of serialization your Data Transport Object less then a DataSet?