我有一个Web服务,它正在返回包含字符串数组的JSON对象。我已经通过json.net处理了对象:
public partial class Token
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("permissions")]
public string[] Permissions { get; set; }
}
我想将Permissions
字符串数组转换为枚举,然后将所得的位掩码存储到SQLITE数据库中的BLOB列中。我的枚举是这样构建的:
[Flags]
public enum Rights : uint
{
none= 0,
read = 1,
write = 2,
modify = 4,
[... etc ...]
}
将字符串数组分析到位于数据库中的BitMask(INT(中的正确方法是什么?
我将要做的是从数据库中获取BitMask,然后使用.hasflag来确定是否在令牌中授予了适当的权限。
我也开放了更好的方法来实现这一目标。
将字符串值列表转换为可以将Enum.Parse
(将字符串转换为enum(和Aggregate
转换为或或的单个值的单个值:
string[] permissions = new[]{"read", "write"};
Rights r = permissions
.Select(x => (Rights)Enum.Parse(typeof(Rights), x)) // parse string to enum
.Aggregate((cur,next) => cur | next); // merge all into single value
注意:如果您不能保证该值实际上总是有效的,请使用Enum.TryParse
而不是Parse
,并且有一些默认值。