【发布时间】:2011-10-16 19:21:33
【问题描述】:
我有一堆表示应用程序各个部分的权限的枚举。
public enum PermissionGroup1
{
CanDo11,
CanDo12,
CanDo13,
}
public enum PermissionGroup2
{
CanDo21,
CanDo22,
CanDo23,
}
public enum PermissionGroup3
{
CanDo31,
CanDo32,
CanDo33,
}
对于给定的用户,我有一个用户所有权限的集合,然后要检查权限,我有一个类似的方法:
public Boolean CheckXXXAccess(int ModuleID, PermissionGroupX permission)
{
bool hasAccess = false;
if (!m_Permissions.ContainsKey(ModuleID))
{
hasAccess = false;
}
else
{
hasAccess = (permission == (ModulePermissions[ModuleID].PermissionGroupX & permission));
}
return hasAccess;
}
所以为了进一步解释,数据库包含一个 ModuleID(对于给定的模块类型有一个 PermissionGroup 枚举),然后我对每个模块类型都有一个类似 CheckXXXAccess 的方法。
如何使用泛型来创建一个方法而不是重复它?
【问题讨论】:
-
ModulePermissions是什么,或者更具体地说,ModulePermissions[ModuleID]返回什么? -
ModulePermissions 只是一组权限,基本上是所有 PermissionGroups 的列表。它将返回权限的掩码(对于那个枚举)
标签: c# generics permissions refactoring