title: What's the difference between implementing FilterAttribute, IActionFilter and inheriting from ActionFilterAttribute in asp.net mvc 3?
body: <p>I see that in one situation we can override <code>OnActionExecuting</code> or <code>OnActionExecuted</code> methods inheriting from <code>ActionFilterAttribute</code> class like this: </p>
  
  <pre><code>public class MyFilterAttribute : ActionFilterAttribute
  {
      public override void OnActionExecuted(ActionExecutedContext filterContext)
      { // bla bla }
  }
  </code></pre>
  
  <p>And in other situation we also can implement <code>IActionFilter</code> and <code>FilterAttribute</code> like this: </p>
  
  <pre><code>public class MySecondFilterAttribute : FilterAttribute, IActionFilter 
  { 
      public void OnActionExecuted(ActionExecutingContext filterContext) {}
  }
  </code></pre>
  
  <p>So, is there any differences between these two approaches, maybe any particular situations where it would be preferable to use one of them over the other??</p>
  
  <p>Thanks in advance.</p>