Tag: enums

为枚举元素指定多个值

嗨,我目前有这个枚举 [Serializable] public enum Country { US = 1, Canada = 2, } 当我通常从数据库中获取整数时,我将其转换为枚举使用 (Country) Convert.ToInt32(“1”) 我现在在美国和加拿大有2个子区域,美国1和2,加拿大3和4。 所以,当我这样做 (Country) Convert.ToInt32(“1”)或(Country) Convert.ToInt32(“2”)我应该得到美国的枚举。 以及3和4加拿大。 我该如何实现? [Serializable] public enum Country { US = 1,2 Canada = 3,4 } 像这样的东西。 这可能不对,只是为了给你一个想法。

在C#2.0中生成随机枚举

有人可以指点我用一种更简洁的方法来生成随机枚举成员。 这有效,但看起来很难看。 谢谢! public T RandomEnum() { string[] items = Enum.GetNames(typeof( T )); Random r = new Random(); string e = items[r.Next(0, items.Length – 1)]; return (T)Enum.Parse(typeof (T), e, true); }

如何装饰JSON.NET StringEnumConverter

我正在使用一个api,返回这样的字符串值。 some-enum-value 我尝试将这些值放在枚举中,因为默认的StringEnumConverter没有完成这项工作,我尝试用一​​些额外的逻辑来装饰这个转换器。 如何确保正确反序列化值? 以下代码是我尝试完成这项工作。 但是行reader = new JsonTextReader(new StringReader(cleaned)); 因为base.ReadJson无法将字符串识别为JSON,所以打破了整个事情。 有没有更好的方法来实现这一点,而无需在StringEnumConverter中实现所有的强制逻辑? 如何解决我的方法? public class BkStringEnumConverter : StringEnumConverter { public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.String) { var enumString = reader.Value.ToString(); if (enumString.Contains(“-“)) { var cleaned = enumString.Split(‘-‘).Select(FirstToUpper).Aggregate((a, b) => a + b); reader = new […]

如何将generics枚举转换为int?

我有一个小方法,看起来像这样: public void SetOptions() where T : Enum { int i = 0; foreach (T obj in Enum.GetValues(typeof(T))) { if (i == 0) DefaultOption = new ListItem(obj.Description(), obj.ToString()); i++; DropDownList.Items.Add(new ListItem(obj.Description(), obj.ToString())); } } 基本上,我从枚举中填充下拉列表。 Description()实际上是枚举的扩展方法,因此T绝对是enum 。 但是,我想像对此(int)obj一样对其索引进行任何枚举,但是我得到一个错误,说我无法将T转换为int。 有没有办法做到这一点?

在WCF数据服务中使用枚举

我正在尝试使用POCO数据模型手动构建WCF数据服务,我无法弄清楚如何正确公开enum值。 假设一个简单的模型,如: public class Order { public int ID {get; set;} public string Description {get; set;} public OrderStatus Status {get; set;} } public enum OrderStatus { New, InProcess, Complete } 如何通过OData WCF数据服务公开OrderStatus属性中的有价值信息? 如果不执行任何操作,则数据服务会生成运行时错误(枚举为无效属性)。 我见过的唯一解决错误的答案是将enum属性标记为已忽略,例如: [System.Data.Services.IgnoreProperties(“Status”)] public class Order … 这有效,但它会强制您从服务层“省略”有价值的信息。 是否有其他选项可以在WCF数据服务中使用枚举值? 编辑:请注意这是WCF数据服务 (aka Astoria)。 这不是原始WCF服务,在这种情况下答案更清楚。

你可以在运行时添加到枚举类型

如果我有枚举类型: Public enum Sport { Tennis = 0; Football = 1; Squash = 2; Volleyball = 3; } 我可以在运行时以某种方式添加: PingPong = 4

值在枚举列表中

我有一个相当基本的问题:如何检查给定值是否包含在枚举值列表中? 例如,我有这个枚举: public enum UserStatus { Unverified, Active, Removed, Suspended, Banned } 现在我想检查status in (Unverified, Active) 我知道这有效: bool ok = status == UserStatus.Unverified || status == UserStatus.Active; 但必须有一种更优雅的方式来写这个。 这个queston的主题非常相似,但那是处理标志枚举,这不是标志枚举。 提前致谢。

如何将列表框中选择的值分配给枚举变量?

我想避免以下问题: private void listBoxBeltPrinters_SelectedIndexChanged(object sender, System.EventArgs e) { string sel = string listBoxBeltPrinters.SelectedItem.ToString(); if (sel == “Zebra QL220”) { PrintUtils.printerChoice = PrintUtils.BeltPrinterType.ZebraQL220; } else if (sel == “ONiel”) { PrintUtils.printerChoice = PrintUtils.BeltPrinterType.ONiel; } else if ( . . .) } 有没有一种方法可以更优雅或雄辩地根据列表框选择分配给枚举,如: PrintUtils.printerChoice = listBoxBeltPrinters.SelectedItem.ToEnum(PrintUtils.BeltPrinterType)? ?

如何从描述中获取枚举值?

我有一个枚举代表系统中的所有材料汇编代码: public enum EAssemblyUnit { [Description(“UCAL1”)] eUCAL1, [Description(“UCAL1-3CP”)] eUCAL13CP, [Description(“UCAL40-3CP”)] eUCAL403CP, // … } 在系统另一部分的遗留代码中,我的对象标记了与枚举描述匹配的字符串。 鉴于其中一个字符串,获取枚举值的最简洁方法是什么? 我想象的是: public EAssemblyUnit FromDescription(string AU) { EAssemblyUnit eAU = return eAU; }

如何通过枚举名称和值名称获取未知枚举的值?

很抱歉提出这个问题,但我找不到适合这项任务的解决方案: 我有一个枚举,名为“myEnum”(函数不知道MyEnum)我需要获取myEnum值的int值 例: 程序员命名为枚举“myEnum”: public enum myEnum { foo = 1, bar = 2, } 我的函数应该执行以下操作:通过字符串获取“myEnum”的“foo”值 function应该打开: public int GetValueOf(string EnumName, string EnumConst) { } 所以当程序员A打开它时: int a = GetValueOf(“myEnum”,”foo”); 它应该返回1 当程序员B有一个名为“mySpace”的枚举时,想要返回值为5的“bar” int a = GetValueOf(“mySpace”,”bar”) 应该返回5 我怎样才能做到这一点?