C#关于数据库中存储的用户权限类似 \"普通员工,管理员\" 如何在代码中读取分析权限
之前在看某些数据库的用户权限的表时,发现字段是这样类似这样存储的“ 普通员工,管理员 ”,当时觉得他们是通过分割字符串来分析权限的。后来读到 Liam Wang 的 https://www.cnblogs.com/willick/p/csharp-enum-superior-tactics.html#4578088 这篇文章有所启发,发现可以在内部采取枚举类来实现。
首先,定义权限枚举类
public enum Role
{
普通员工 = 1 << 0,
操作员 = 1 << 1,
管理员 = 1 << 2,
经理 = 1 << 3
}然后读取和分析权限
public class Man
{
public Role Role { get; set; }
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Man man = new Man();
string dbStr = "普通员工,管理员"; //假设已经从数据库中读到的权限数据
man.Role = (Role)Enum.Parse(typeof(Role), dbStr);
if (man.Role.HasFlag(Role.普通员工 | Role.管理员))
{
}
}如果想保存权限到数据库,则需要添加[Flags]特性
[Flags]
public enum Role
{
普通员工 = 1 << 0,
操作员 = 1 << 1,
管理员 = 1 << 2,
经理 = 1 << 3
}
private void btn_Save(object sender, RoutedEventArgs e)
{
Man man = new Man();
man.Role = Role.操作员 | Role.经理;
string msg = man.Role.ToString(); //msg="操作员, 经理"
}