Sie können nicht einfach Ihren Filter in Ihrem ContainsTwoFilters
becouse FilterAttribute
ist Klasse erben und es gibt keine mehrfache Klassenvererbung in C#.
Sie können alle Methoden von Filter1
und Filter1
aufrufen, die Sie in Ihrem ContainsTwoFilters
benötigen.
Etwas wie folgt aus:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class ContainsTwoFilters : ActionFilterAttribute
{
private Filter1Attribute filter1;
private Filter2Attribute filter2;
public ContainsTwoFilters()
{
//Init filters
filter1 = new Filter1Attribute();
filter2 = new Filter2Attribute();
}
public void OnAuthorization(AuthorizationContext filterContext)
{
//Here we can call 2 filters
filter1.OnAuthorization(filterContext);
filter2.OnAuthorization(filterContext);
}
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
//And here only one
filter2.OnActionExecuting(actionContext);
}
}
Beachten Sie, dass, wenn Sie Ihre Methode wie folgt beschriften:
[ContainsTwoFilters]
[Filter2]
public ActionResult Index()
{
return View();
}
Ihre Filter2
Methoden zweimal aufgerufen werden. Sei vorsichtig.
deponds auf, was ist Ihre Bedingung für beide Filter –