Given that you have a relatively small number of objects, I would recommend using system.runtime.caching so that you can avoid the overhead of using EnterpriseLibrary. You can also consider creating a ConcurrenctDictionary to store your cached objects - especially if you want more control over the lifetime of objects (expiration policy, etc.).
If you were building a web application, I would recommend using System.Web.Caching.Cache rather than System.Runtime.Caching.MemoryCache . We had problems with System.Runtime.Caching.MemoryCache , see the following SO article for details: -
source share