Improvements and advice for my Cache class
Something you might consider is switching it to be a static class instead of a singleton.  The caching system itself is already performing the singleton process.  

To add functionality, if you change it to a static class you can add helpers to extend caching directly onto the object(s) itself like myDictionary.Cache() and myDictionary.LoadFromCache().  

Reflection frequently gets used where it shouldn't.  However, you could decorate the functionality to auto-infer the "namespace.class.variablename" which removes magic stings entirely and makes the extended functionality more fluent.  I hope this helps.