C# 多个属性调用序列

本文关键字:调用 属性 | 更新日期: 2023-09-27 18:32:26

我有多个属性要应用于控制器,我需要按顺序调用它们,因为如果第一个属性执行,我会初始化以下属性将使用的变量。

[AuthorizeLicense]
[MerchantLoggedIn]
[MerchantAuthorize]
public class MerchantController : BaseController
{
}

我的属性的定义

 public class AuthorizeLicense:AuthorizeAttribute
{
    protected override  bool AuthorizeCore(HttpContextBase httpContext)
    {
        if(somecondition is true){
     //initialize variables for next attribute use;
        }
    }
    protected override  void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {

    }

}

下一个属性

  public class MerchantLoggedIn:AuthorizeAttribute
{
    protected override  bool AuthorizeCore(HttpContextBase httpContext)
    {
          //use initialize variables from previous attribute 

    }
    protected override  void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {

    }

}

我面临的挑战是属性不是按照我在类上定义的顺序调用的;这是从上到下的。请帮忙..我做错了什么。

C# 多个属性调用序列

您可以使用 Order 参数

[AuthorizeLicense(Order = 1)]
[MerchantLoggedIn(Order = 2)]
public class ...

请参阅 asp.net mvc 中自定义属性中的执行优先级