asp.net - mvc - net core exception filter
¿Cuál es la diferencia entre implementar FilterAttribute, IActionFilter y heredar de ActionFilterAttribute en asp.net mvc 3? (1)
Básicamente, FilterAttribute proporciona el comportamiento de bajo nivel de los atributos de MVC e implementa IMvcFilter que proporciona las propiedades Order y AllowMultiple.
ActionFilterAttribute es la base para filtrar acciones y resultados, ya que es una implementación de IActionFilter, IResultFilter y hereda de FilterAttribute.
La implementación de MySecondFilterAttribute conduce a ActionFilterAttribute sin las capacidades de IResultFilter (OnResultExecuting y OnResultExecuted).
Veo que en una situación podemos anular los métodos OnActionExecuting
o OnActionExecuted
que heredan de la clase ActionFilterAttribute
de la ActionFilterAttribute
manera:
public class MyFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{ // bla bla }
}
Y en otra situación también podemos implementar IActionFilter
y FilterAttribute
esta manera:
public class MySecondFilterAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuted(ActionExecutingContext filterContext) {}
}
Entonces, ¿hay alguna diferencia entre estos dos enfoques, quizás alguna situación particular en la que sería preferible usar uno de ellos sobre el otro?
Gracias por adelantado.