发布
社区首页 >问答首页 >接受具有特定属性的任何枚举的函数

接受具有特定属性的任何枚举的函数
EN

Stack Overflow用户
提问于 2019-09-13 18:54:22
回答 1查看 52关注 0票数 0
代码语言:javascript
代码运行次数:0
复制
public HasPermissionAttribute(Permissions permission) : base(((int)permission).ToString())
{

}

我想要动态检查权限。现在我只有一个枚举,里面有多个选项。这样,我就可以对控制器使用HasPermission(Permissions.SomePermission),而动态策略创建将执行其余的工作,检查某人是否拥有这样的权限。

但是,如果我可以有多个包含权限的枚举,那就太好了。然后,我可以将权限拆分到域中,例如,将来可以将应用程序拆分成域部分,这些域部分是封装在.dll中的模块,其中包含主应用程序不需要知道的自己的模型、控制器和权限-但无论如何都可以通过拥有它们的值来检查它们。

所以我有这样的属性,我可以给Enum,我想要标记为权限容器。

代码语言:javascript
代码运行次数:0
复制
[AttributeUsage(AttributeTargets.Enum, AllowMultiple = false)]
public class PermissionsEnumAttribute : Attribute
{
}

我可以将它提供给这样的枚举,并动态地查找标记为权限容器的枚举,但是我如何才能保留IntelliSense的能力来帮助我呢?如果HasPermissionAttribute接受任何具有PermissionEnumAttribute的枚举,并给我一些实际可以使用的提示,那将是最好的。

有没有可能实现这样的事情,或者我更愿意使用不同的方法?主要目标是能够使用HasPermission,因为它是检查某人是否可以访问特定控制器的一种非常方便的方式。枚举是我的主要选择,因为它们有自动递增的数值,可以作为代码优先方法中的主键,所以我可以在里面添加更多选项,IntelliSense将帮助我完成剩下的工作。

EN

回答 1

Stack Overflow用户

发布于 2019-09-13 19:05:08

使用枚举的数组实例如何?

代码语言:javascript
代码运行次数:0
复制
string[] array = new string[5]; 
array[0] = "Value1"; 
array[1] = "Value1"; 
array[2] = "Value1"; 
array[3] = "Value1"; 
array[4] = "Value1"; 

Method(array, 2); 


static bool Method(string[] array, int i) { 
  if (i >= array.Length) { 
    //Error 
    return false; 
  } 

  string a = array[i]; 
  return true; 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57922290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档