Tag: 枚举

Enum上的IEnumerable扩展方法

我有一个枚举(下面),我希望能够使用LINQ扩展方法。 enum Suit{ Hearts = 0, Diamonds = 1, Clubs = 2, Spades = 3 } Enum.GetValues(…)是返回类型System.Array,但我似乎无法访问ToList()扩展或其他任何类型。 我只是想写点像…… foreach(Suit s in Enum.GetValues(typeof(Suit)).Select(x=>x).Where(x=> x != param)){} 有什么我想念的,或者有人可以向我解释为什么这是不可能的? 谢谢。

如何双向将复选框绑定到标志枚举的单个位?

对于喜欢WPF绑定挑战的人: 我有一个近乎function的例子,双向绑定一个复选框到一个标志枚举的单个位(感谢Ian Oakes, 原始的MSDNpost )。 但问题是绑定的行为就好像它是一种方式(UI到DataContext,反之亦然)。 因此,复选框不会初始化,但如果切换,则数据源会正确更新。 Attached是定义一些附加依赖项属性的类,以启用基于位的绑定。 我注意到的是,即使我强制DataContext更改,也永远不会调用ValueChanged。 我尝试过:更改属性定义的顺序,使用标签和文本框确认DataContext正在冒泡更新,任何合理的FrameworkMetadataPropertyOptions(AffectsRender,BindsTwoWayByDefault),显式设置绑定模式= TwoWay,敲打墙头,改变如果发生冲突,ValueProperty到EnumValueProperty。 任何建议或想法将非常感谢,感谢您提供的任何东西! 枚举: [Flags] public enum Department : byte { None = 0x00, A = 0x01, B = 0x02, C = 0x04, D = 0x08 } // end enum Department XAML用法: CheckBox Name=”studentIsInDeptACheckBox” ctrl:CheckBoxFlagsBehaviour.Mask=”{x:Static c:Department.A}” ctrl:CheckBoxFlagsBehaviour.IsChecked=”{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}” ctrl:CheckBoxFlagsBehaviour.Value=”{Binding Department}” class级: /// /// A […]

在C#中使用枚举作为数组索引

我想在这个问题上做同样的事情,那就是: enum DaysOfTheWeek {Sunday=0, Monday, Tuesday…}; string[] message_array = new string[number_of_items_at_enum]; … Console.Write(custom_array[(int)DaysOfTheWeek.Sunday]); 但是,我宁愿有一些不可或缺的东西,而不是写这个容易出错的代码。 C#中是否有内置模块可以做到这一点?

Enum.HasFlag,为什么没有Enum.SetFlag?

我必须为我声明的每个标志类型构建一个扩展方法,如下所示: public static EventMessageScope SetFlag(this EventMessageScope flags, EventMessageScope flag, bool value) { if (value) flags |= flag; else flags &= ~flag; return flags; } 为什么没有一个Enum.SetFlag就像有一个Enum.HasFlag ? 另外,为什么这总不起作用? public static bool Get(this EventMessageScope flags, EventMessageScope flag) { return ((flags & flag) != 0); } 例如,如果我有: var flag = EventMessageScope.Private; 并检查它: if(flag.Get(EventMessageScope.Public)) 其中EventMessageScope.Public确实是EventMessageScope.Private | EventMessageScope.PublicOnly EventMessageScope.Private | […]

如何使用空格的枚举值?

如何在.NET使用枚举实现以下function? 我想对每个包含空格的值进行描述。 public enum PersonGender { Unknown = 0, Male = 1, Female = 2, Intersex = 3, Indeterminate = 3, Non Stated = 9, Inadequately Described = 9 } 我希望能够在每次使用此类型的值时选择是使用描述还是整数。

如何将generics类型参数限制为System.Enum

可能重复: 任何人都知道缺乏枚举通用约束的好方法吗? 创建将T限制为枚举的通用方法 是否可以将Enum的generics类型参数[我不知道这是否是正确的名称]? 例如,我该如何做这样的事情? //VB.NET Function GetValues(Of T As System.Enum)(ByVal value As T) As IEnumerable(Of T) Return [Enum].GetValues(value.GetType) End Function //C# public IEnumerable GetValues(T value) where T : System.Enum { return Enum.GetValues(value.GetType()); } 更新 我最终为此目的使用了Jon Skeet的无约束旋律 。 感谢大家的贡献。

获取“链接”(AKAcollections夹)文件夹的路径

更新: 所以我发现在执行所有这些工作时,您的用户文件夹中的“Links”文件夹似乎可以命名为ANYTHING,您仍然可以通过转到“C:\ Users(username)\ Links”来访问它 例如:重命名 “C:\Users\(username)\Links” 至 “C:\Users\(username)\MyNewLinksFolder” 然后尝试浏览到…… “C:\Users\(username)\Links” (额头到掌心) Windows 7文件资源管理器树中有一个“collections夹”节点: 这些collections夹的路径(默认情况下)位于: 我希望能够通过c#代码获得此路径。 我希望使用Environment.SpecialFolder枚举,但这似乎是一个洗! 我不能依赖于总是驻留在的文件夹: c:\users\[username]\Links …因为任何人都可以更改该目录名称,它仍然可以正常工作,然后我的硬编码路径将是无用的。 所以! 我的问题是,如何在不使用硬编码字符串的情况下让c#返回该路径? 我也希望能够获得这些项目图标 ! 谢谢!

如何递归迭代实体的属性

假设这是我在数据库中的内容 table Ancestor ( idAncestor int not null, name varchar(20) not null, ) table Descendant ( idDescendant int not null, name varchar(20) not null, Ancestor_idAncestor int not null ) 当ADO.NET为上述2个表生成实体对象时,我可以通过Ancestors.First().Descendants访问Ancestors.First().Descendants 。 如果我以递归方式迭代祖先的后代或后代的后代并打印出其id和name ,以下是我的尝试 public void Iterate(Ancestor a) { Type t = a.GetType(); PropertyInfo[] props = t.GetProperties(); foreach(var prop in props){ // pseudo code here if(prop […]

如何获取Enum描述的字符串列表?

如何获得Enum值的列表? 例如,我有以下内容: public enum ContactSubjects { [Description(“General Question”)] General, [Description(“Availability/Reservation”)] Reservation, [Description(“Other Issue”)] Other } 我需要做的是将ContactSubject.General作为参数传递,它返回描述的列表。 此方法需要使用任何枚举,而不仅仅是ContactSubject(在我的示例中)。 签名应该类似于GetEnumDescriptions(枚举值)。

使用枚举作为键绑定到Dictionary中的值

我是一些应用程序,我想将一些文本框和chekcbox绑定到Dictionary(Enum,string)的值字段。 这有可能,我该怎么做? 在xaml代码中我有这样的东西 – 它用于字典,字符串作为键,但它不能正确绑定到枚举键 ..这就是我在Enum中所拥有的 public enum MyEnum { PrimaryAddress, SecondaryAddress, UsePrimaryAddress } 在ViewModel中,字典定义为: public Dictionary Properties 我找到了具有枚举值的combobox的解决方案,但这不适用于我的情况。 任何建议?