ContainsTwoFilters
でFilterAttribute
がクラスであり、C#で複数のクラス継承がないため、フィルタを継承することはできません。
あなたができることはContainsTwoFilters
の中で必要なFilter1
とFilter1
のすべてのメソッドを呼び出すことです。このような
何か:
[ContainsTwoFilters]
[Filter2]
public ActionResult Index()
{
return View();
}
あなたFilter2
方法は二回呼び出されます:あなたはこのようなあなたのメソッドに注釈を付けた場合、その
[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);
}
}
注意。注意してください。
あなたの両方の条件に合っています –