Allow the creation of engine when the record type don't have a parameter less constructor
Today we throw BadUsageException in the engine creation but maybe the user only want to write records, so there is no problem if there is no constructor.
Throw the BadUsageException only when trying to read objects
That will also speed up a bit the initial setup process because don't need to use reflection to take the constructor pointer on engine creation, that will be delayed to first read :)
It would be even better if one could create the record in the engine.BeforeReadRecord Event. This way you get the freedom to use different factories for record creation without parameter less constructors and gain performance in the case of SkipThisRecord = true. Additionally you get the possibility to use different inherited types or classes implementing an interface. For backwards compatibility this behaviour is controlled with a boolean flag 'engine.DelayRecordCreation'.