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 配列を Enum に対してチェックできますか?

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 に答える