C# 指定的强制转换无效。枚举

C# 指定的强制转换无效。枚举,c#,asp.net,C#,Asp.net,这段代码有什么问题,我也尝试了Enum.Parse,但没有成功 public enum RoleNames { Administrator, [Description("Personnel Security")] PrsonalSecurity, } foreach (RoleNames roleName in arRoles) //<<<error { if (IsCurrentUserInRole(roleName)) { re

这段代码有什么问题,我也尝试了
Enum.Parse
,但没有成功

public enum RoleNames  
{
    Administrator,
    [Description("Personnel Security")]
    PrsonalSecurity,
}

foreach (RoleNames roleName in arRoles) //<<<error
{
        if (IsCurrentUserInRole(roleName)) { return true; }
}
公共枚举角色名称
{
管理员
[说明(“人员安全”)]
公共安全,
}

foreach(arRoles中的RoleNames-roleName)//您能否发布代码的其余部分,因为下面的示例可以很好地工作:

public enum RoleNames   
{ 
    Administrator, 
    [Description("Personnel Security")] 
    PersonalSecurity
} 

RoleNames[] testEnumArray =
    { RoleNames.Administrator, RoleNames.PersonalSecurity };
foreach (RoleNames en in testEnumArray)
{
    // do something
}
根据错误消息,
arRoles
不能是
RoleNames
数组,因为强制转换失败

如果要迭代枚举定义,可以使用以下代码:

foreach (RoleNames type in Enum.GetValues(typeof(RoleNames)) 
{   
    // do something
} 

张贴你的确切密码

有机会描述一下你的情况吗?你想在这里实现什么?你确定
arRoles
是一个RoleNames列表吗?
arRoles
的确切类型是什么?如果
arRoles
仅包含
RoleNames
,则此代码应该有效。但是因为它不是泛型的,所以不会出现编译时错误。arRoles是一个作为参数传递的RoleNames,我正在比较用户传递的内容以及arRoles是否在RoleNames中。有道理?