我已经看过类似的问题,但他们似乎没有处理我遇到的同一问题。从字符串中获取枚举类型
我定义为
public enum CRUDOperation
{
NotNeeded = 0,
Read = 1,
Create = 2,
Update = 4,
Delete = 8
}
的CRUD许可测试枚举我没有写这个代码下一部分这就是为什么我会被混淆,但随后与角色相关联的CRUD权限值按以下方式放入“限制”字符串中。
Restrictions = "";
foreach (string inCrud in restrictions)
{
string crud = inCrud.ToUpper();
int res = 0;
if (crud.Contains('C'))
res |= (char)CRUDOperation.Create;
if (crud.Contains('R'))
res |= (char)CRUDOperation.Read;
if (crud.Contains('U'))
res |= (char)CRUDOperation.Update;
if (crud.Contains('D'))
res |= (char)CRUDOperation.Delete;
Restrictions += (char)res;
}
现在我需要通过这个“限制”的字符串进行解析,以检查是否给定的角色具有相应CRUDOperation权限级别。然而,字符串中充满了随机的ascii字符,我只是很难理解如何正确地做到这一点。之前我根本没有使用过掩饰。我正在努力做到这一点;
CRUDOperation operation = (CRUDOperation)Enum.Parse(typeof(CRUDOperation), p.Restrictions);
但我收到错误“请求值”未找到。“
有没有人有任何建议?
这似乎是一个非常混乱的方式来做一些非常简单的事情。 – Icemanind
我不确定第二段代码如何处理原作者*认为的*代码。使用'Flags'属性会很容易... –
那么它究竟做了什么?我对发生了什么的印象是要么将enum值的char转换添加到限制字符串中? – kdeez