title: Generic Cache mechanism for .NET
body: <p>I've got a class library which has a Person class.  The Person class includes a property for CountryName and CountryCode.  The CountryCode is the value stored in the Person table.  The CountryName is retrieved from an accompanying lookup table.</p>
  
  <p>Because the mapping between CountryName and CountryCode is not likely to ever change, I feel comfortable using caching for the lookup within the Person business object.  </p>
  
  <p>My class library will be used for ASP.NET sites as well as Console and Windows apps in the future.  <strong>What is the proper mechanism for implementing this type of generic caching?</strong>  (note little "g", not .NET Generics)</p>
  
  <p>You might argue that the caching should be done at a different layer, but I'd still likely benefit from a caching mechanism that works in any type of .NET project.</p>