Tag: enums

将枚举值绑定到标签XAML

我正在使用Enum字段来跟踪我的程序状态。 public enum StatiMacchina { InAvvio = 1, Pronta = 2, InLavorazione = 3, InMovimento = 4, InAttesa = 5, InErrore = 6 } 我想绑定跟随字段的状态(在主窗口中) public StatiMacchina StatoMacchina { get; set; } 在XAML中带有标签。 我使用转换器(转换function下方) public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { switch ((StatiMacchina)value) { case StatiMacchina.InAvvio: return “txt1”; case StatiMacchina.Pronta: return […]

将某个JSON值映射到枚举值C#

我正在为Stack Exchange API创建类。 filter_object类型包含成员filter_type ,该成员将是safe , unsafe或invalid 。 所以我创建了一个这样的枚举: [JsonConverter(typeof(StringEnumConverter))] public enum FilterType { safe, @unsafe, // Here lies the problem. invalid } 由于unsafe是一个关键字,我不得不为它添加一些前缀。 但是,如何使值“不安全”自动映射到@unsafe ? 示例JSON: { “filter”: “….”, “filter_type”: “unsafe”, “included_fields”: [ “…”, “….”, “…..” ] } 如何反序列化,以便filter_type自动转换为FilterType.@unsafe ? 更新 – 解决: 在标识符之前使用@符号可以使其与关键字相同。 即使@出现在intellisense中,它也能正常工作。

使用Enum.Parse()时出现意外结果

class Program { static void Main(string[] args) { String value = “Two”; Type enumType = typeof(Numbers); Numbers number = (Numbers)Enum.Parse(enumType, value); Console.WriteLine(Enum.Parse(enumType, value)); } public enum Numbers : int { One, Two, Three, Four, FirstValue = 1 } } 这是我在应用程序中使用的枚举的简化版本。 为什么某些枚举名称没有值的原因是因为我使用其名称作为参数执行Enum.Parse,而具有值的那些名称则从int解析。 如果您单步执行上面的代码并调查’number’变量,您会看到它实际上是’Two’,但控制台中的输出是’FirstValue’。 此时我看不清楚为什么,是吗? 好的,解决方案很简单 – 只需给无价值的枚举值。 但我仍然很好奇。

如何从值的类型和名称创建枚举对象?

我有一个枚举的类型(System.Type)和一个包含要设置的枚举值的字符串。 例如给出: enum MyEnum { A, B, C }; 我有typeof(MyEnum)和“B”。 如何创建设置为MyEnum.B的MyEnum对象?

无法将类型’TEnum’转换为’int’

我正在尝试将枚举转换为List,如本例中所述,例如 Enum.GetValues(typeof(MyEnum)).Cast().Select(v => new SelectListItem { Text = v.ToString(), Value = ((int)v).ToString() }).ToList(); 这项工作,但我想修改它以使用通用枚举 public static List GetEnumList(TEnum value) { return Enum.GetValues(typeof(TEnum)).Cast().Select(v => new SelectListItem { Text = v.ToString(), Value = ((int)v).ToString() }).ToList(); } 但是上面的代码没有编译和给出 无法将类型’TEnum’转换为’int’ 为线 Value = ((int)v).ToString() 我如何修复上面的代码。 为什么它使用generics枚举而不是正常的枚举给出编译错误 编辑:我已经尝试了线程中的建议,但我得到了进一步的错误: 这是我的完整代码: public static IHtmlContent EnumDropDownListFor( this IHtmlHelper htmlHelper, Expression<Func> expression, TEnum enumValue, […]

获取Enum而无需键入其类名?

我注意到在C#中,当我有一个Enum时,说: class ClassObject { public static Enum EventType = {Click, Jump, Etc}; } 当我必须访问它时,我必须通过它的主类,它非常冗长。 例如: ClassObject.EventType.Click 我希望我能以更短的方式访问它,比如说: EventType.Click ,将允许我得到它。 所以我认为我可以尝试创建一个单独的类并从Enum扩展它: class EventType : Enum { Click, Jump, Etc; } 但是,我收到了这个语法错误。 实际上,为此目的创建另一个单独的课程有点麻烦,我甚至不知道这是不是一个好习惯。 但理想情况下,我只想缩短名称,并且可能避免在访问枚举之前必须键入类名。 这可能吗?

C#可以访问没有完全限定名称的枚举

我有一个C#枚举类型,最终有很长的限定名。 例如 DataSet1.ContactLogTypeValues.ReminderToFollowupOverdueInvoice. 为了便于阅读,如果我能告诉某个特定的函数只使用名称的最后一部分,那会很好… { using DataSet1.ContactLogTypeValues; … logtype = ReminderToFollowupOverdueInvoice; … } 是否有可能在C#中做这样的事情?

EntityName枚举

要对Microsoft Dynamics CRM执行查询,必须传递某些实体名称以过滤结果。 但是,使用.NET Framework 4,我没有EntityName枚举,尽管它应该是公共的。 这是为什么? 以下是我想念的内容: http : //msdn.microsoft.com/en-us/library/bb959317.aspx

使用Key = Enums Name和Value = Enums值使用最佳技术创建键值对列表

在C#4.0 – 5.0中,如何创建键值对列表,其中键是枚举名称的值,值是枚举名称值。 同样在C#中,如何创建键值对列表,其中键是枚举名称,值是属性EnumName名称。 我希望有两个基于枚举名称的单独列表,以便从attribtue中检索值或人类可读的名称。 例: public enum QATypes { [EnumMember(Value = “Black Box”)] BlackBox = 10, [EnumMember(Value = “Integration Tests”)] IntegrationTests = 20, [EnumMember(Value = “Acceptance Testing”)] AcceptanceTesting= 30, … } 并且第一个列表对于值看起来像这样: {{ key:”BlackBox”, value:10 }, { key:”IntegrationTests “, value:20 },{ key:”AcceptanceTesting”, value:30 },…} 对于enumsmember,第二个列表看起来像这样: {{ key:”BlackBox”, value:”Black Box”}, { key:”IntegrationTests “, value:”Integration Tests”},{ […]

IEnumerable 的扩展方法?

我有一堆不同的枚举,比如…… public enum MyEnum { [Description(“Army of One”)] one, [Description(“Dynamic Duo”)] two, [Description(“Three Amigo’s”)] three, [Description(“Fantastic Four”)] four, [Description(“The Jackson Five”)] five } 我为任何Enum编写了一个扩展方法,以获取Description属性(如果有)。 很简单吧…… public static string GetDescription(this Enum currentEnum) { var fi = currentEnum.GetType().GetField(currentEnum.ToString()); var da = (DescriptionAttribute)Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)); return da != null ? da.Description : currentEnum.ToString(); } 我可以非常简单地使用它,它就像一个魅力,返回描述或ToString()按预期。 这是问题所在。 我希望能够在IEnumerable的MyEnum,YourEnum或SomeoneElsesEnum上调用它。 所以我简单地编写了以下扩展名。 public […]