Asp.net 如何在枚举中获取特定名称的值?

Asp.net 如何在枚举中获取特定名称的值?,asp.net,asp.net-mvc,enums,Asp.net,Asp.net Mvc,Enums,基本上,我正在编写自己版本的“角色提供者”和“授权属性”。我有一个枚举(作为一个位字段),其中列出了所有可能的角色: namespace myProject.Global { [Flags] enum Roles { Viewer = 1, User = 2, Admin = 4, Superadmin = 8 } } 我的属性的工作方式与现有属性类似。在我的逻辑中,我循环遍历每个“授权”角色,检查

基本上,我正在编写自己版本的“角色提供者”和“授权属性”。我有一个枚举(作为一个位字段),其中列出了所有可能的角色:

namespace myProject.Global
{
    [Flags]
    enum Roles
    {
        Viewer = 1,
        User = 2,
        Admin = 4,
        Superadmin = 8
    }
}
我的属性的工作方式与现有属性类似。在我的逻辑中,我循环遍历每个“授权”角色,检查用户是否属于它_rolesSplit是在AuthorizeAttribute中为特定操作提供的角色数组。会话[“角色”]是表示用户角色的整数

 foreach (string roleName in _rolesSplit)
{
    if ((httpContext.Session["Roles"] & myProject.Global.Roles[roleName]) == myProject.Global.Roles[roleName]) return true;
}

return false;
这是我无法工作的部分:APICText.Global.Roles[roleName]。我是.NET开发的新手,所以我不知道如何使它工作。我基本上需要传递一些东西,比如角色名,然后获取相关的值。我该怎么做?

您需要的是

试试这样的

foreach (string roleName in _rolesSplit)
{
    if (httpContext.Session["Roles"] & (Roles)Enum.Parse(typeof(Roles), roleName) == (Roles)Enum.Parse(typeof(Roles), roleName)) return true;
}
或者这个

foreach (string roleName in _rolesSplit)
{
    Roles role = (Roles)Enum.Parse(typeof(Roles), roleName);
    if (httpContext.Session["Roles"] & role == role) return true;
}

谢谢你的帮助!虽然我的代码中的另一个bug正在阻止我现在测试它,但我还是能够让这段代码正常工作。来自PHP,强类型对象/变量的概念对我来说还是一个新概念,当你知道如何使用它时,它肯定有很大的优势=]再次感谢,我真的很感激!!