在工作代码中,我们有许多魔术字符串的使用,如下面的代码片段:
if (user.HasRight("Profile.View")) {...}
Run Code Online (Sandbox Code Playgroud)
因此,有很多地方我们将字符串作为参数传递,以查看用户是否具有特定权限.我不喜欢这样,因为它产生了很多神奇的字符串.
做一个更好的方法是什么?
Enum,Constant,class?
Jus*_*ner 17
在该特定情况下,使用Enum.没有神奇的字符串,如果Enum发生变化(以某种方式破坏魔术字符串解决方案),应用程序将不再编译.
public enum ProfilePermissions
{
View,
Create,
Edit,
Delete
}
Run Code Online (Sandbox Code Playgroud)
然后你可以简单地:
if(user.HasRight(ProfilePermissions.View)) { }
Run Code Online (Sandbox Code Playgroud)
您也可以使用一个类,但是当涉及更复杂的场景时,您会限制自己.例如,将Enumeration简单地更改为:
public enum ProfilePermissions
{
View = 1,
Create = 2,
Edit = 4,
Delete = 8
}
Run Code Online (Sandbox Code Playgroud)
允许您使用按位运算符来获得更复杂的权限(例如,用户需要创建或删除的情况):
if(user.HasRight(ProfilePermissions.Create | ProfilePermissions.Delete));
Run Code Online (Sandbox Code Playgroud)
这在.NET框架中也很常见.示例是System.Windows.DataFormats和System.Net.WebRequestMethods.Http.你想要的只读品种:
public static class MumbleRights {
public static readonly string ProfileView = "Profile.View";
// etc..
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6336 次 |
| 最近记录: |