我有以下成员角色的枚举:
public enum RoleName
{
RegisteredUser,
Moderator,
Administrator,
Owner
}
我希望能够获取大于或等于给定角色的所有角色。
例如,我输入管理员,然后获得一个包含RoleName.Administration
和RoleName.Owner
的IEnumerable
类似这样的东西:
public static void AddUserToRole(string username, RoleName level)
{
var roles = Enum.GetValues(typeof(RoleName)).Cast<R>().ToList().Where(role => level > role);
foreach (var role in roles)
{
Roles.AddUserToRole(username, role);
}
}
发布于 2011-07-24 23:59:27
您可以使用以下助手方法为您提供给定角色所允许的一组角色:
private IEnumerable<RoleName> AllAllowedRoles(RoleName level)
{
return Enum.GetValues(typeof(RoleName)).Cast<RoleName>().Where(role => level >= role);
}
然后将它们全部分配给用户。
发布于 2011-07-25 00:17:19
随之而来的:
public static void AddUserToRole(string username, RoleName level)
{
var roles = RolesLesserThanOrEqualTo(level);
foreach (var role in roles)
{
Roles.AddUserToRole(username, role.Name());
}
}
public static IEnumerable<RoleName> RolesLesserThanOrEqualTo(RoleName level)
{
return Enum.GetValues(typeof(RoleName)).Cast<RoleName>().Where(role => level >= role);
}
发布于 2011-07-24 23:56:12
除了需要Cast<int>()
和不需要ToList()
之外,您的代码是完全正确的。
https://stackoverflow.com/questions/6807834
复制相似问题