title: Which Design Pattern to use for assigning allowed operations to user types?
body: <p>I'm developing a system in C# (.NET 4.0) which will be used by various kind of users.</p>
  
  <p>Each user type will only be allowed to interact with the application in a specific way. For example, user A should only be able to do operations 1, 2 and 3. User B should only be able to do operation 2, 3 and 4. Etc.</p>
  
  <p>I decided to implement an interface called "Role", which is implemented by various classes such as "Administrator", "Reader", etc. A user may have multiple roles (defined as a list of "Roles").</p>
  
  <p>I'd like each role ("Administrator", "Reader", etc.) to have a list of allowed operations. I was thinking of defining an enum somewhere which will contain all operations possible within the application. Each "Role" would then have a list of items found in that enum.</p>
  
  <p>I find this rather unoptimized, since I will have to always make sure to keep this enum up-to-date as I implement new functionalities in my application.</p>
  
  <p>What approach would you recommend that I use ? Are there any design patterns that can help me out ?</p>