Sì, si chiama Programmazione orientata agli aspetti e PostSharp è probabilmente lo strumento migliore per il lavoro (purtroppo non è gratuito).
Tuttavia, se stai utilizzando MVC (non hai ancora menzionato nulla in quanto tale) puoi derivare la tua versione di AuthorizeAttribute per interrogare le tue tabelle di autorizzazione e puoi semplicemente decorare le tue azioni con i ruoli che desideri consentire, ad es.
[Authorize(Roles="Customer, Company")]
public ActionResult ViewOrders(...)
{
...
}
[Authorize(Roles="Customer")]
public ActionResult CreateOrder(...)
{
...
}