我正在尝试增强我的枚举,所以我尝试了一个关于Display的建议和另一个关于Description 的建议。
我很生气,因为我不明白它们之间的区别。既描述类和显示类是从框架4.5。
这也很烦人,因为它们都没有在代码中工作。我正在测试以下内容,但我只能看到驴......
[Flags]
public enum Donkeys
{
[Display(Name = "Monkey 1")]
Donkey1 = 0,
[Description("Monkey 2")]
Donkey2 = 1
}
Run Code Online (Sandbox Code Playgroud) 我想知道我是否可以在C#中扩展Enum类型以实现我的自定义Enum.GetValues(类型)并将其称为Enum.GetMyCustomValues(type)
我试图实现这样的事情:
public static bool IsFlagSet<T>(this T value, T flag) where T : Enum
{
return (value & flag) != (T)0;
}
Run Code Online (Sandbox Code Playgroud)
但它无法完成......我可以做任何工作吗?干杯
我是C#的新手,如果我的一些概念倾斜,请原谅我.我正在使用Canon EDSDK,为了让生活更轻松,我希望能够将错误消息看作文本而不是十六进制值.EDSDK.cs文件包含一长串错误,例如:
public const uint EDS_ERR_TAKE_PICTURE_CARD_NG = 0x00008D07;
public const uint EDS_ERR_TAKE_PICTURE_CARD_PROTECT_NG = 0x00008D08;
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想将所有这些放入某种查找表中,以便输入HEX错误代码并将实际消息作为字符串返回.例如
Hashtable EDSDKErrorCodes = new Hashtable();
EDSDKErrorCodes.Add("0x00008D01", "EDS_ERR_TAKE_PICTURE_AF_NG");
EDSDKErrorCodes.Add("0x00008D08", "EDS_ERR_TAKE_PICTURE_CARD_PROTECT_NG");
etc etc...
Run Code Online (Sandbox Code Playgroud)
在我的代码后面,我可以获取从其中一个EDSDK方法返回的错误消息,并以人类可读的形式显示它:
errorcode= EDSDK.EdsInitializeSDK();
MessageBox.Show(Convert.ToString(EDSDKErrorCodes[errorcode]));
Run Code Online (Sandbox Code Playgroud)
我的问题是..这是处理所有这些错误代码的好方法还是人们会推荐更好更有效的方法?如果是这样,我如何将哈希表填充为一系列常量而不必使用Add方法?
有人可以向我解释为什么要Value.GetType().GetCustomAttribute回报null吗?我查看了十个不同的教程,了解如何获取枚举类型成员的属性.无论GetCustomAttribute*我使用哪种方法,我都没有返回自定义属性.
using System;
using System.ComponentModel;
using System.Reflection;
public enum Foo
{
[Bar(Name = "Bar")]
Baz,
}
[AttributeUsage(AttributeTargets.Field)]
public class BarAttribute : Attribute
{
public string Name;
}
public static class FooExtensions
{
public static string Name(this Foo Value)
{
return Value.GetType().GetCustomAttribute<BarAttribute>(true).Name;
}
}
Run Code Online (Sandbox Code Playgroud) using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace NumberedMusicScores
{
public enum KeySignatures
{
C,
G,
D,
A,
E,
B,
FCress,
CCress,
F,
Bb,
Eb,
Ab,
Db,
Gb,
Cb
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用它,我希望FCress并CCress显示为F#和C#.怎么做到这一点?
我试过这个:怎么用?字符枚举,但Description在[Description("F#")]似乎不存在.(用红线加下划线,如果我右键单击它,它甚至不会显示任何"Resolve".
更新:澄清:
enum,而是一个配置为的类enum.我想要enum解决方案.谢谢.
public enum ObjectType {Country = 0,Region = 1,Province = 2,City = 3,Hotel = 4}
我有两个语言版本的两个应用程序,这个枚举在某个地方显示,所以取决于语言版本我想显示正确版本的枚举
用德语版本代替Country Land等
此应用程序使用相同的websercice,它具有此枚举的声明.
添加
我有一个datagridview和对象列表,哪些类有字段ObjectType,我必须在datagridviev中显示这个池,所以这是一个问题
我需要将以下代码放入枚举中:
10, 11, 13, AA, BB, EE
Run Code Online (Sandbox Code Playgroud)
我正在努力让他们进入C#中的枚举.我目前有这个:
public enum REASON_CODES { _10, _11, _13, AA, BB, CC }
Run Code Online (Sandbox Code Playgroud)
但想拥有这个,数字被识别为字符串,而不是整数:
public enum REASON_CODES { 10, 11, 13, AA, BB, CC }
Run Code Online (Sandbox Code Playgroud)
这可能还是我在做梦?
如何在C#中将枚举值显示为V1.0,V2.0,V3.0?
enum value
{
V1.0,
V2.0,
V3.0
}
Run Code Online (Sandbox Code Playgroud) 我有字节值的枚举:
enum MarketingEventType : byte {MARKETING_CAMPAIGN, TELESALES, MARKETING_ACTIONS};
Run Code Online (Sandbox Code Playgroud)
我想给出所有元素名称,我将通过ToSting()方法获得.例如:
MarketingEventType.TELESALES.ToString(); // I get "bla bla bla"
MarketingEventType.MARKETING_ACTIONS.ToString(); // I get "la la la"
Run Code Online (Sandbox Code Playgroud)
从BYTE到STRING没有改变类型的enum是可能的吗?
我可以像下面这样使用enum吗?
我可以像TeamManager,TeamLeader,SeniorDeveloper等那样做.但我想在"团队经理"这样的词之间留一个空格
public enum SoftwareEmployee
{
Team Manager = 1,
Team Leader = 2,
Senior Developer = 3,
Junior = 4
}
Run Code Online (Sandbox Code Playgroud) 如何使用包含空格的枚举项名称?
enum Coolness
{
Not So Cool = 1,
VeryCool = 2,
Supercool = 3
}
Run Code Online (Sandbox Code Playgroud)
我通过下面的代码获取Enum项目名称
string enumText = ((Coolness)1).ToString()
Run Code Online (Sandbox Code Playgroud)
我不会改变这段代码,但上面的代码应该返回Not So Cool.有没有使用oops概念来实现这一目标?在这里,我不想更改检索语句.
c# ×11
enums ×9
.net ×3
attributes ×1
c#-4.0 ×1
edsdk ×1
oop ×1
string ×1
web-services ×1
winforms ×1