I was goofing off with bitmasking again and decided to do some in c#. I came up with this helper class to aid in working with bit fields as an example. This class takes advantage of an enum with flags attribute to assist with assigning values to the flags. An interesting addition might be to create the logic so that, for example, the particular database permissions would take precedence over another. So, when you assign a user DB data reader and DB denydatareader, the permission "deny" would be the prevailing permission. Likewise, if assigning Administrator would not allow a mask for db datareader, for instance, because that permission set has higher privileges than the latter.
Lee
using System;
using System.Collections.Generic;
namespace BitWiseExample_Permissions
{
[FlagsAttribute]
public enum DBPermissionValues : int
{
None = 0,
DbDataReader = 1,
DbDataWriter = 2,
Administrator = 4
};
public class DBPermissions
{
public DBPermissions()
{
_permissions = DBPermissionValues.None;
}
public DBPermissions(DBPermissionValues permissions)
{
_permissions = permissions;
}
private DBPermissionValues _permissions;
public bool IsDbWriter
{
get
{
return ((_permissions
& DBPermissionValues.DbDataWriter)
== DBPermissionValues.DbDataWriter);
}
set
{
if (value == true)
_permissions = _permissions
| DBPermissionValues.DbDataWriter;
}
}
public bool IsDbReader
{
get
{
return ((_permissions &
DBPermissionValues.DbDataReader)
== DBPermissionValues.DbDataReader);
}
set
{
if (value == true)
_permissions =
_permissions
| DBPermissionValues.DbDataReader;
}
}
public bool IsAdmin
{
get
{
return ((_permissions
& DBPermissionValues.Administrator)
== DBPermissionValues.Administrator);
}
set
{
if (value == true)
_permissions =
_permissions
| DBPermissionValues.Administrator;
}
}
}
}
--------------
Glad this isn't a database blog

b468298e-0b4b-4b13-87f7-4c2d7a190947|0|.0