Rewritten Data Layer
Summary
While the data layer was fine for what it was doing it always felt slightly noisy in terms of the amount of classes/interfaces there for abstraction etc, also it made it difficult to really do anything productive due to the reliance on just an object
data source so you always had to know what was being passed in.
IRepository
So to try and make things a bit more stable and easier to extend we have removed the generics and moved to just a singular IRepository
which has extension methods to do all CRUD based operations the old one had as well as streamlining data source interactions via a new IDataSource
interface.
You can read more about some of these decisions and changes in my chapter here
IDataSource
This basically wraps the notion of an underlying data source, be it a database, an in memory data store (Dictionary) or anything else, this makes it a bit easier to interact with now as the IDataSource
exposes methods to access data which the old one didn't.
Locales
Due to the repository change the LocaleRepository
does not align 100% with the new pattern but has been altered to seem like it is the same, and is less noisy too.
Extensions
This also has some more extension methods around curves and random numbers, these also warranted unit tests so we now have a test project to go with everything, and thats the last of the major changes in this version!