0

我有以下代码,其中变量 userRoles 是一个字符串数组,可以包含和或全部“Super”、“Admin”、“User”或“Guest”。

    public static RoleType GetMaxRole()
    {
        var userRoles = Roles.GetRolesForUser();
        // var maxRole = userRoles.Max();
        if userRoles.Contains("Super")
            return RoleType.Super;
        if userRoles.Contains("Admin")
            return RoleType.Admin;
        if userRoles.Contains("User")
            return RoleType.User;
        if userRoles.Contains("Guest")
            return RoleType.Guest;
        return RoleType.Default;
    }

这是我正在使用的枚举:

public enum RoleType
{
    Default = 10,
    Guest = 20,
    User = 30,
    Admin = 40,
    Super = 50
}

有没有一种方法可以在没有多个 if 语句的情况下实现相同的目标。某种方式我可以让 userRoles 数组检查枚举?

4

1 回答 1

2
public static RoleType GetMaxRole()
{
    var userRoles = Roles.GetRolesForUser();
    var maxRole = userRoles.Max(x => (RoleType)Enum.Parse(typeof(RoleType), x));
    return maxRole;
}
于 2012-10-15T04:16:38.303 回答