2016-01-28 69 views
1

我有多個屬性我想應用在控制器上,我需要按順序調用它們,因爲如果第一個屬性執行,我初始化下列屬性將使用的變量。我的屬性C#多個屬性調用序列

[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) 
    { 


    } 


} 

我面臨的挑戰是,屬性不是序列中被稱爲我已經在類中定義它們;即從上到下。 請幫忙..我做錯了什麼。

+5

聽起來像壞了設計對我來說,如果屬性只能當另一個也已設置,那麼你可以將其封裝成任何後者辦法。如果任何開發人員只提供一個屬性,你在做什麼? – HimBromBeere

+2

只是大聲思考,但你能否將其他2個屬性作爲參數傳遞給第一個屬性,但是如果我誠實地說我不喜歡這個想法或屬性取決於對方。編輯。 HimBromBeere擊敗了我 – Matt

+1

如果MerchantLoggedIn始終需要AuthorizeLicense,那麼您可以從AuthorizeLicense繼承並使用one屬性。 – Mant101

回答