草庐IT

c# - 任何人都知道缺少枚举通用约束的良好解决方法?

我想做的是这样的:我有带有组合标记值的枚举。publicstaticclassEnumExtension{publicstaticboolIsSet(thisTinput,TmatchTo)whereT:enum//theconstraintIwantthatdoesn'texistinC#3{return(input&matchTo)!=0;}}那么我可以这样做:MyEnumtester=MyEnum.FlagA|MyEnum.FlagBif(tester.IsSet(MyEnum.FlagA))//actonflaga不幸的是,C#的泛型where约束没有枚举限制,只有类和结构。C

枚举和匹配属性的 C# 命名约定

我经常发现自己实现了一个类,它维护某种自己的状态属性作为枚举:我有一个Status枚举和一个Status类型的Status属性。我应该如何解决这个名称冲突?publicclassCar{publicenumStatus{Off,Starting,Moving};Statusstatus=Status.Off;publicStatusStatus//如果Status枚举对于不同的类型是通用的,我会把它放在类之外,问题就会得到解决。但Status仅适用于Car,因此在类外声明枚举没有意义。在这种情况下,您使用什么命名约定?注意:这个问题在thisquestion的回答评论中进行了部分辩论。

枚举和匹配属性的 C# 命名约定

我经常发现自己实现了一个类,它维护某种自己的状态属性作为枚举:我有一个Status枚举和一个Status类型的Status属性。我应该如何解决这个名称冲突?publicclassCar{publicenumStatus{Off,Starting,Moving};Statusstatus=Status.Off;publicStatusStatus//如果Status枚举对于不同的类型是通用的,我会把它放在类之外,问题就会得到解决。但Status仅适用于Car,因此在类外声明枚举没有意义。在这种情况下,您使用什么命名约定?注意:这个问题在thisquestion的回答评论中进行了部分辩论。

c# - 如何尝试解析枚举值?

我想编写一个函数,它可以根据enum的可能值验证给定值(作为字符串传递)。在匹配的情况下,它应该返回枚举实例;否则,它应该返回一个默认值。该函数可能不会在内部使用try/catch,这排除了使用Enum.Parse,这会在给定无效参数时抛出异常.我想使用类似于TryParse函数的方式来实现:publicstaticTEnumToEnum(thisstringstrEnumValue,TEnumdefaultValue){objectenumValue;if(!TryParse(typeof(TEnum),strEnumValue,outenumValue)){returndefaul

c# - 如何尝试解析枚举值?

我想编写一个函数,它可以根据enum的可能值验证给定值(作为字符串传递)。在匹配的情况下,它应该返回枚举实例;否则,它应该返回一个默认值。该函数可能不会在内部使用try/catch,这排除了使用Enum.Parse,这会在给定无效参数时抛出异常.我想使用类似于TryParse函数的方式来实现:publicstaticTEnumToEnum(thisstringstrEnumValue,TEnumdefaultValue){objectenumValue;if(!TryParse(typeof(TEnum),strEnumValue,outenumValue)){returndefaul

c# - 将枚举转换为另一种类型的枚举

我有一个枚举,例如“Gender”(Male=0,Female=1),我有另一个来自服务的枚举,它有自己的Gender枚举(男性=0,女性=1,未知=2)我的问题是我怎样才能写出一些快速而漂亮的东西来从他们的枚举转换成我的枚举? 最佳答案 给定Enum1value=...,然后如果您按名称表示:Enum2value2=(Enum2)Enum.Parse(typeof(Enum2),value.ToString());如果你的意思是数值,你通常可以直接转换:Enum2value2=(Enum2)value;(通过强制转换,您可能希望使

c# - 将枚举转换为另一种类型的枚举

我有一个枚举,例如“Gender”(Male=0,Female=1),我有另一个来自服务的枚举,它有自己的Gender枚举(男性=0,女性=1,未知=2)我的问题是我怎样才能写出一些快速而漂亮的东西来从他们的枚举转换成我的枚举? 最佳答案 给定Enum1value=...,然后如果您按名称表示:Enum2value2=(Enum2)Enum.Parse(typeof(Enum2),value.ToString());如果你的意思是数值,你通常可以直接转换:Enum2value2=(Enum2)value;(通过强制转换,您可能希望使

c# - 根据数据库查找表中的值自动创建枚举?

我如何根据数据库查找表中的值自动创建枚举并随后在C#中使用它的值(使用企业库数据层)?例如,如果我在数据库中添加一个新的查找值,我不想在代码中手动添加额外的静态枚举值声明-我想让枚举与数据库保持同步。有这样的事情吗?我不想创建代码生成的静态枚举(根据TheCodeProject文章EnumCodeGenerator-Generatingenumcodeautomaticallyfromdatabaselookuptables),我希望它是完全自动的。 最佳答案 我正在做这件事,但您需要进行某种代码生成才能使其正常工作。在我的解决方案

c# - 根据数据库查找表中的值自动创建枚举?

我如何根据数据库查找表中的值自动创建枚举并随后在C#中使用它的值(使用企业库数据层)?例如,如果我在数据库中添加一个新的查找值,我不想在代码中手动添加额外的静态枚举值声明-我想让枚举与数据库保持同步。有这样的事情吗?我不想创建代码生成的静态枚举(根据TheCodeProject文章EnumCodeGenerator-Generatingenumcodeautomaticallyfromdatabaselookuptables),我希望它是完全自动的。 最佳答案 我正在做这件事,但您需要进行某种代码生成才能使其正常工作。在我的解决方案

c# - 将枚举绑定(bind)到 WinForms 组合框,然后设置它

很多人已经回答了如何在WinForms中将枚举绑定(bind)到组合框的问题。是这样的:comboBox1.DataSource=Enum.GetValues(typeof(MyEnum));但如果无法设置要显示的实际值,那将毫无用处。我试过:comboBox1.SelectedItem=MyEnum.Something;//Doesnotwork.SelectedItemremainsnull我也试过:comboBox1.SelectedIndex=Convert.ToInt32(MyEnum.Something);//ArgumentOutOfRangeException,Sele