title: How to ensure uniqueness across multiple enums?
body: <p>I'm implementing Caching architecture for my application. I wan't the keys to be an enum driven value instead of passing keys from different modules. This will let me manage all my caching calls in one place (as everything specified in the enum is cached).</p>
  
  <p>My enum definitions are as follows:</p>
  
  <pre><code>public enum ActionsTypeAEnum { SomthingFromACache, SomethingElseFromACache }
  public enum ActionsTypeBEnum { SomthingFromBCache, SomethingElseFromBCache }
  </code></pre>
  
  <p>Now I have defined a <code>CacheManager</code> util class which has methods like GetCachedData, InsertCacheData, and so on...</p>
  
  <p>I have a couple of questions:</p>
  
  <ol>
  <li><p>How do I ensure that the enum values are unique across multiple enums?</p></li>
  <li><p>In my InsertCacheData, I would like to have just 1 method which accepts values from any of the defined enums, instead of having multiple overloaded methods defined for this (as C# does not provide Enum inheritance, I cannot use a 'base' type enum as a method parameter)</p></li>
  </ol>
  
  <p>How else can I architect my code to achieve the above tasks?</p>