2016-01-20 48 views
0

想要了解如何修飾WebApi控制器類和方法。WebApi中的ClassMethod屬性

  • 是否可以在類級別(而不是方法級別)添加「方法屬性」?
  • 如何添加一個將enum作爲參數的屬性?例如。 [AuthorisedRoles(Roles.Developer,Roles.Tester,Roles.PM)]

在此先感謝您的任何指示。

+0

這些問題與WebApi沒有多大關係,或者您的問題太模糊,以至於難以理解。你應該谷歌如何編寫/創建自定義在C#中。 https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=how%20to%20write%20custom%20attribute%20in%20c%23 – Igor

回答

0

像這樣(未測試):

public class TestController : ApiController 
{ 
    //[Authorize(Roles = "dev, user")] 
    [EnumRolesAuthorise(UserRoles.Developer, UserRoles.Testers, UserRoles.PM)] 
    public string Get() 
    { 
     throw new NotImplementedException(); 
    } 
} 

public class EnumRolesAuthoriseAttribute : AuthorizeAttribute 
{ 
    public EnumRolesAuthoriseAttribute(params UserRoles[] roles) 
    { 
     Roles = string.Join(",", roles.Select(r => Enum.GetName(typeof (UserRoles), r))); 
    } 
} 

public enum UserRoles 
{ 
    Developer, 
    Testers, 
    PM 
} 

我相信你可以申請[EnumRolesAuthorise]控制器一樣容易操作,就像你會與[Authorize]