Tag: 枚举

.NET Flag Enum从值中获取属性

问候StackOverflow, 如果我有一个带有Flag属性的枚举类型以及此枚举类型中具有各自属性的值,我该如何检索所有适当的属性? 例如: [Flags()] enum MyEnum { [EnumDisplayName(“Enum Value 1”)] EnumValue1 = 1, [EnumDisplayName(“Enum Value 2”)] EnumValue2 = 2, [EnumDisplayName(“Enum Value 3”)] EnumValue3 = 4, } void Foo() { var enumVar = MyEnum.EnumValue2 | MyEnum.EnumValue3; // get a collection of EnumDisplayName attribute objects from enumVar … }

如何在MVC 4中为枚举创建默认编辑器模板?

我们知道,如果我们为基类型定义模板,那么该模板也可以用于派生类型(如果没有使用任何其他模板来覆盖它)。 由于我们无法inheritanceEnum ,因此Enum也不会被认为是从Enuminheritance的,因此Views\Shared\EditorTemplates的Enum.cshtml模板都不Enum.cshtml对象的不同自定义枚举属性有效,如下所示: public enum Role { Admin, User, Guest } 我已经在ASP中看到了关于这个主题的一些答案,但是我想知道在MVC 4中是否对这个主题有一些改进? PS。 我的意思是不使用任何明确的模板属性(如@Html.EditorFor(model => model.Role, “Enum”)或[UIHint(“Enum”)] ) PPS。 我是MVC的新手,所以我很感激你的简单答案。

我可以在现有的.NET结构中添加枚举,比如Date吗?

显然,微软的日期结构没有月份枚举。 我想知道的是,是否可以创建枚举并将其附加到DateTime结构? 扩展方法立即浮现在脑海中,但我不知道如何使用它们来解决这个问题。 Dim july As DateTime.Months = DateTime.Months.July Public Enum Months January = 1 February = 2 March = 3 April = 4 May = 5 June = 6 July = 7 August = 8 September = 9 October = 10 November = 11 December = 12 End Enum 有没有人对此有任何想法? 更新:我没有尝试获取当前月份或给定日期的月份名称。 我知道该怎么做。 我只是想创建一个具有Month属性的类,并希望使用Enum来表示月份。 由于这似乎是一个可以在其他地方使用的项目,我讨厌将Enum放入我的class级,而宁愿让它“定位”在与其直接相关的结构中,以便可以轻松找到它。 […]

如何在datagridview列中显示枚举值

我有这个数据库,不是我的设计,但我必须使用它,它包含一个像这样的表: id | 名称| 状态| … —– + ———— + ———- + —— 1 | 产品1 | 2 | … 2 | 产品2 | 2 | … 3 | 产品3 | 3 | … …… | …… | …… | … status属性是指枚举所在的位置 0 =无效 1 =开发 2 =激活 3 =老 当我在只读datagridview中显示它时,我希望用户看到枚举的名称(Dev,Activ,…)或描述而不是数值。 datagridview绑定到来自DAL的数据表,同样不属于我的设计,因此我无法真正更改数据表。 我发现如何做到这一点的唯一方法是通过监听datagridview.CellFormating事件,我把这个代码: private void […]

将字符串数组转换为枚举

我将enum绑定到属性网格,如下所示: public enum myEnum { Ethernet, Wireless, Bluetooth } public class MyClass { public MyClass() { MyProperty = MyEnum.Wireless; } [DefaultValue(MyEnum.Wireless)] public MyEnum MyProperty { get; set; } } public Form1() { InitializeComponent(); PropertyGrid pg = new PropertyGrid(); pg.SelectedObject = new MyClass(); pg.Dock = DockStyle.Fill; this.Controls.Add(pg); } 我的问题:我在程序运行时动态获取数据。 我读了网络适配器,然后将适配器名称存储到myArray如下所示: string[] myArray = new string[] { […]

在枚举值中查找最高设置标志

我正在使用带有flags属性的枚举作为跟踪状态的方法。 一个例子如下: Created = 1 Completed = 2 Dispatched = 4 没有写任何过于严格的东西(如果检查这个,那么,如果检查,请执行此操作)我希望能够找到已在此示例中设置的最高标志: Item.Status = Status.Created | Status.Completed 神秘的方法将返回2 – 完成后,标志设置为具有最高值。 GetMaxSetFlagValue(Item.Status) // returns 2 我发现了围绕实际枚举的问题,而不是使用标志的值。 我很确定这可以用Linq实现……?

C#阻止Collection被修改exception

是否 foreach(T value in new List(oldList) ) 当oldList包含1百万个对象T时危险(代价高昂)? 更常见的是,在枚举期间添加/删除元素时,枚举oldList的最佳方法是什么?

比较两个类型为T的System.Enum

我现在非常接近了解Generics(我认为)。 但是,只是认为System.Enum不容易实现为generics类型。 我有这堂课: public class Button where TEnum : struct, IConvertible, IComparable, IFormattable { public TEnum Identifier { get; private set; //Set in the ctor } } 和 public abstract class AbstractInputDevice where TEnum : struct, IConvertible, IComparable, IFormattable { private List<Button> _buttons = new List<Button>(); public Button GetButton(TEnum Identifier){ foreach(Button button in _buttons){ if(button.Identifier […]

Enum.IsDefined带有标记的枚举

我现在正在读一本Nutshell中的C#4.0这本书,我认为这本书是一本很好的书,即使是高级程序员也可以作为一个很好的参考书。 我回顾了有关基础知识的章节,我遇到了一个技巧,告诉我在使用标记枚举时是否在Enum中定义了某个值。 该书指出使用Enum.IsDefined对标记的枚举不起作用,并建议如下解决方法: static bool IsFlagDefined(Enum e) { decimal d; return (!decimal.TryParse(e.ToString(), out d); } 如果在标记的枚举中定义了某个值,则应该返回true。 有人可以向我解释为什么这有效吗? 提前致谢 :)

Enum.GetNames()导致具有负枚举常量的意外顺序

我有以下枚举定义(在C#中): public enum ELogLevel { General = -1, // Should only be used in drop-down box in Merlinia Administrator log settings All = 0, // Should not be used as a level, only as a threshold, effectively same as Trace Trace = 1, Debug = 2, Info = 3, Warn = 4, Error = 5, […]