Tag: enums

多个枚举说明

我定义了以下enum : public enum DeviceType { [Description(“Set Top Box”)] Stb = 1, Panel = 2, Monitor = 3, [Description(“Wireless Keyboard”)] WirelessKeyboard = 4 } 我正在使用Description属性来允许我提取更多用户可读的枚举版本以在UI中显示。 我使用以下代码获得描述: var fieldInfo = DeviceType.Stb.GetType().GetField(DeviceType.Stb.ToString()); var attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); var description = (attributes.Length > 0 ? attributes[0].Description : DeviceType.Stb.ToString()); 上面的代码将给我: description = “Set Top Box” 。 如果没有设置Description属性,它将为我提供枚举的字符串值。 我现在想为每个枚举添加第二个/自定义属性(为了示例,称为“值”)。 例如: […]

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

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

从枚举中获取XmlEnumAttribute

我有枚举: public enum Operation { /// [System.Xml.Serialization.XmlEnumAttribute(“01”)] Item01, /// [System.Xml.Serialization.XmlEnumAttribute(“02”)] Item02, /// [System.Xml.Serialization.XmlEnumAttribute(“03”)] Item03, /// [System.Xml.Serialization.XmlEnumAttribute(“04”)] Item04, } 我如何获得XmlEnumAttribute值? 我正在努力: var res = Operation.Item1; var result = (res.GetType().GetField(“Item01”).GetCustomAttributes(typeof(XmlEnumAttribute), true)[0] as XmlEnumAttribute).Name; 可能存在更好的方法吗?

将List转换为IEnumerable

这里有棘手的问题。 我正在尝试将列表的项目转换为IEnumerable 。 清单 dynamicTextInDatabase只返回我的数据库中使用的所有枚举。 目前只返回1和2.数据类simple包含一个int值。 dynamicTextEnumsInDatabase与实际存储我的枚举的类中的列表相同。 dynamicTextEnumsAll是我的应用程序中可用的所有枚举的列表。 目前:1,2和3。 dynamicTextEnumsAvaiable是所有未使用的枚举的列表。 它组合了所有枚举,然后删除数据库列表中的那些。 我需要通过dynamicTextEnumsAvaiable将dynamicTextEnumsAvaiable传递给我的View,以显示在下拉列表中。 但是,它必须是IEnumerable而不是List 。 码 List dynamicTextInDatabase = new List(); List dynamicTextEnumsInDatabase = new List(); List dynamicTextEnumsAll = new List(); IEnumerable list; using (var proxy = new Proxy()) { dynamicTextInDatabase = proxy.Channel.DynamicTextGetActiveEnums(Helper.GetCallingUser()); } foreach (DynamicTextEnumData item in dynamicTextInDatabase) { DynamicTextEnum dynamicTextEnum = (DynamicTextEnum)item.DynamicTextEnum; dynamicTextEnumsInDatabase.Add(dynamicTextEnum); } […]

枚举的主要用途是什么?

枚举在c#中的主要用途是什么? 编辑: –假设我想比较字符串变量与任何枚举项,那么我如何在c#中做到这一点?

获取Enum值以显示在Dropdownlist Asp.Net MVC上

我有这样的枚举: public enum PaymentType { Self=1, Insurer=2, PrivateCompany=3 } 我在控制器中将它显示为像这样的选择框选项: List paymentTypeList = Enum.GetValues(typeof (Patient.PaymentType)).Cast().ToList(); ViewBag.PaymentType = new SelectList(paymentTypeList); 在这里我可以看到只有枚举的字符串部分(例如“Self”)才会到达前端,所以我不会在我的下拉列表中获得枚举的值(例如“1”)。 如何将文本以及枚举值传递给选择列表?

为什么受“Enum”限制的generics类型无法在C#7.3中被认定为“结构”?

如果我有一个带有struct约束的generics接口,如下所示: public interface IStruct where T : struct { } 我可以提供枚举作为我的类型T ,因为enum满足struct约束: public class EnumIsAStruct : IStruct { } C#7.3添加了一个Enum约束 。 以下代码以前是非法的,现在编译: public class MCVE : IStruct where T : struct, Enum { } 但令我惊讶的是,以下内容无法编译: public class MCVE : IStruct where T : Enum { } ……有错误 CS0453类型’T’必须是非可空值类型才能在generics类型或方法’IStruct’中将其用作参数’T’ 为什么是这样? 我希望由Enum约束的generics类型可用作类型参数,其中类型受struct约束但似乎不是这种情况 – 我必须将我的Enum约束更改为struct, Enum 。 我的期望是错的吗?

为什么“并非所有代码路径都返回一个值”,带有switch语句和枚举?

我有以下代码: public int Method(MyEnum myEnum) { switch (myEnum) { case MyEnum.Value1: return 1; case MyEnum.Value2: return 2; case MyEnum.Value3: return 3; } } public enum MyEnum { Value1, Value2, Value3 } 我得到错误: “Not all code paths return a value” 。 我不明白switch语句怎么不能跳转到指定的情况之一。 enum可以以某种方式为null吗?

Json.net自定义枚举转换器

我目前正在使用Json.net在我的应用程序中使用json。 我使用的API为枚举发送了一个特定的字符串格式,例如: 对于类型为TemperatureType的枚举,值为fahrenheit, Celcius json值为: {“result”:[“TemperatureType_fahrenheit”,”TemperatureType_Celcius”]} 我想使用转换器直接管理它以获得IList但也适用于其他枚举类型。 有人有想法吗? 我尝试使用自定义JsonConverter: if (reader.TokenType == JsonToken.String && reader.Value != null) { string value = reader.Value.ToString(); var splitValues = value.Split(‘_’); if (splitValues.Length == 2) { var type = Type.GetType(splitValues[0]); return Enum.Parse(type, splitValues[1]); } } 问题是GetType属性,因为我没有指示所需类型和没有命名空间的参数

列出标志枚举中的所有位名称

我正在尝试创建一个帮助方法来列出Enum值中设置的所有位的名称(用于记录目的)。 我想要一个方法,它将返回一些变量中设置的所有枚举值的列表。 在我的例子中 [Flag] Enum HWResponse { None = 0x0, Ready = 0x1, Working = 0x2, Error = 0x80, } 我把它提供给0x81,它应该为我提供一个包含{Ready, Error}的IEnumerable 。 由于我没有找到更简单的方法,我尝试编写下面的代码,但我无法编译。 public static IEnumerable MaskToList(Enum mask) { if (typeof(T).IsSubclassOf(typeof(Enum)) == false) throw new ArgumentException(); List toreturn = new List(100); foreach(T curValueBit in Enum.GetValues(typeof (T)).Cast()) { Enum bit = ((Enum) curValueBit); // Here […]