我在Enum中有角色
public enum Role
{
Undefined = 0,
Public= 1,
Private = 2,
..... list continues...
}
我正在使用AuthoriseAtribute for API
设置访问权限 [HttpGet]
[AuthoriseUser(AllowedRoles = new[] { Role.Private, Role.Public })]
public <anyreturnType> Get(int id)
{
// some stuff
}
哪个工作正常。但我喜欢让它更具动态性并优化代码,所以我没有编写完整的角色列表。
所以我试图实现这一目标。
[HttpGet]
[AuthoriseUser(AllowedRoles = new[] { All Roles except Undefined })]
public <anyreturnType> Get(int id)
{
// some stuff
}
这是我创建的解决方案,但不起作用。
[HttpGet]
[AuthoriseUser( AllowedRoles = new[] { Enum.GetNames(typeof(Role)).Cast<Role>().Where(r => r != Role.Undefined) } )]
public <anyreturnType> Get(int id)
{
// some stuff
}
我得到的错误是
错误CS0029无法隐式转换类型 'System.Collections.Generic.IEnumerable []'到 'Model.Role []'
AuthoriseUserAttribute类看起来像这样。
public class AuthoriseUserAttribute : AuthorizeAttribute
{
public Role[] AllowedRoles { get; set; }
.....more stuff here....
}
当我使用@Camilo Terevinto和@ejohnson推荐的解决方案时 我收到以下错误
答案 0 :(得分:0)
Camilo Terevinto是正确的,除了您还需要使用Enum.GetValues
而不是Enum.GetNames
(返回字符串):
Enum.GetValues(typeof(Role)).Cast<Role>().Where(r => r != Role.Undefined).ToArray()