Tag: enum flags

ASP.NET MVC中的访问控制使用基于的Enum进行SQL中的int权限管理

这个问题的灵感来自这个关于 ASP.NET MVC中访问控制的SO问题 。 在这里,我试图将接受的答案带入一个切实的解决方案。 答案提到使用FileSystemSecurity作为管理权限的灵感。 这里我还使用带有Flags属性的枚举来定义所有对象的ACL。 此外,我的对象的每个成员都将存储在SQL中的一列中。 假设简化的Linq2SQL,EF或nHibernate ORM映射。 编辑:为此方法添加了以下好处/原理 此安全模型的灵感来自FileSystemRights ,即管理文件级权限的.NET方法。 我喜欢这种方法的主要原因之一是,我可以通过将所有单独的ACL进行OR运算来轻松创建所有权限的摘要。 我也喜欢我可以添加DENY ACL来删除inheritance的权限。 List PermissionsList = GetACLForObject(ItemID, UserID); foreach (var acl in PermissionsList) { // The following enum has the [FlagsAttribute] applied so the .ToString() is pretty PermissionWithFlagsEnum sampleForSO = (PermissionWithFlagsEnum )acl.Permission; Console.Writeline (“Setting ” + sampleForSO.ToString() + ” permission for group: […]

将一些bool属性转换为标志枚举

我需要将具有3个bool属性的遗留类转换为标记枚举。 我知道至少有一个属性是真的。 [Flags] public enum FlagEnum { EnumValue1 = 1, EnumValue2 = 2, EnumValue3 = 4 } public class LegacyClass { public bool PropA { get; set; } public bool PropB { get; set; } public bool PropC { get; set; } } public class DtoClass { public FlagEnum FlagEnum { get; set; } public […]

C#:从KeyEventArgs的KeyData中获取正确的键

我正在捕获一个KeyDown事件,我需要能够检查当前按下的键是否: Ctrl + Shift + M ? 我知道我需要使用KeyEventArgs的e.KeyData , Keys枚举以及Enum Flags和bits的内容,但我不确定如何检查组合。

对于枚举中的None(0)值,HasFlags总是返回true

这是枚举定义: [Flags] enum Animals { None = 0, Dog = 1, Cat = 2, Horse = 4, Zebra = 8, } 现在,给定以下代码,为什么HasFlag方法对值Animals.None返回true? Animals myAnimals = Animals.Dog | Animals.Horse; var hasNone = myAnimals.HasFlag(Animals.None); //true! Why? var hasCat = myAnimals.HasFlag(Animals.Cat); //false var hasDog = myAnimals.HasFlag(Animals.Dog); //true var hasHorse = myAnimals.HasFlag(Animals.Horse); //true var hasZebra = myAnimals.HasFlag(Animals.Zebra); //false

应该“或”使用.Net4 Hasflags:enum.HasFlag(AccessRights.Read | AccessRights.Write)

我正在尝试新的HasFlagsfunction,并想知道以下是否应该工作: enum.HasFlag(AccessRights.Read | AccessRights.Write) ……因为它似乎不…… DBAccessRights rights = (DBAccessRights)permission.PermissionFlags; if (rights.HasFlag(DBAccessRights.WikiMode)) { // works } if (rights.HasFlag(DBAccessRights.WikiMode | DBAccessRights.CreateNew)) { // Doesn’t work } DBAccessRights flags = DBAccessRights.WikiMode | DBAccessRights.CreateNew; if (rights.HasFlag(flags)) { // Doesn’t work }

C#,Flags Enum,寻找标志的通用函数

我想要一个可以与任何Flags样式枚举一起使用的通用函数来查看是否存在标志。 这不会编译,但如果有人有建议,我会很感激。 public static Boolean IsEnumFlagPresent(T value,T lookingForFlag) where T:enum { Boolean result = ((value & lookingForFlag) == lookingForFlag); return result ; }

使用Flags枚举时如何减少ASP.NET MVC视图中的代码重复

原谅我的无知。 没有做过很多MVC的工作,我确信必须有更好的方法来做到这一点,但我似乎无法找到它。 我有一个像这样的Flags枚举: [Flags] public enum Services { Foo = 1, Bar = 2, Meh = 4 } 我的Model上的SelectedServices属性具有此类型的值。 在视图中,我为每个可能的服务都有一个复选框。 我已经像这样实现了绑定逻辑: <input type="checkbox" name="services" value="@((int)Services.Foo)" @if(Model.SelectedServices.HasFlag(Services.Foo)) { checked } />Foo <input type="checkbox" name="services" value="@((int)Services.Bar)" @if(Model.SelectedServices.HasFlag(Services.Bar)) { checked } />Bar 等等。 哪个有效,但真的非常混乱。 肯定有更好的方法来封装它 – 但我不知道MVC中的相关概念是什么?