草庐IT

c# - 从枚举值列表创建可检查上下文菜单的通用方法

我想创建一个上下文菜单,其中一个menuItem将是一个可以在枚举值中进行选择的子菜单。我不想将枚举中的任何值硬编码到xaml中,因为我希望任何枚举值更改都会自动反射(reflect)在UI中,而无需任何干预。我希望我的菜单是一个没有任何伪影的常规上下文菜单(我的意思是外观应该与常规ContextMenu一样)。我尝试了很多方法都没有成功。我的每个试验总是遗漏一些东西,但主要遗漏的部分似乎是一个可以绑定(bind)到某些东西的converterParamter。我是红色的:CreatingacheckablecontextmenufromalistofenumvaluesWPFMult

c# - 为什么 Enum.Parse() 返回对象?

这里有很多关于将字符串转换为枚举值的问题。通常,答案看起来类似于thisquestion上的答案。:StatusEnumMyStatus=(StatusEnum)Enum.Parse(typeof(StatusEnum),"Active",true);虽然这是一个非常合理的答案,并且您可以编写一个方法来简化调用,但它没有回答为什么Enum.Parse()返回object的问题。而不是适当的枚举值。为什么我必须将它转换为StatusEnum?编辑:基本上,问题是为什么像这样的函数不是Enum类的一部分?publicstaticTParse(stringvalue)whereT:struc

c# - 是否可以创建分层枚举?

我想创建一个分层枚举来表示我可以作为参数传递的类型。数据结构如下:enumCars{Ford{Corsair,Cortina,Galaxy,GT},Ferrari{Testarossa,California,Enzo},...}我希望调用具有以下签名的函数:publicvoidBuildCar(Carscar);像这样:BuildCar(Cars.Ferrari.Enzo);基本上,我想在类型中强制执行汽车/制造商关系。 最佳答案 我考虑过用扩展和/或ICustomEnum东西来回答这个问题。然后我想-以下内容真的有那么糟糕吗?:-

c# - 为什么 Enum 的 HasFlag 方法需要装箱?

我正在阅读“C#viaCLR”,在第380页上,有一条说明如下:NoteTheEnumclassdefinesaHasFlagmethoddefinedasfollowspublicBooleanHasFlag(Enumflag);Usingthismethod,youcouldrewritethecalltoConsole.WriteLinelikethis:Console.WriteLine("Is{0}hidden?{1}",file,attributes.HasFlag(FileAttributes.Hidden));However,Irecommendthatyouavoid

c# - Enum.GetNames() 导致带有负枚举常量的意外顺序

我有以下枚举定义(在C#中):publicenumELogLevel{General=-1,//Shouldonlybeusedindrop-downboxinMerliniaAdministratorlogsettingsAll=0,//Shouldnotbeusedasalevel,onlyasathreshold,effectivelysameasTraceTrace=1,Debug=2,Info=3,Warn=4,Error=5,Fatal=6,Off=7//Shouldnotbeusedasalevel,onlyasathreshold}现在,当我对这种类型执行Enum.Ge

C# - Web API - 将枚举序列化为带空格的字符串

我的问题很简单,但比其他有关将枚举类型序列化为字符串的问题更具体一些。考虑以下代码:usingNewtonsoft.Json;usingNewtonsoft.Json.Converters;publicenumMyEnum{TypeOne,TypeTwo,TypeThree}publicclassFoo{[JsonConverter(typeof(StringEnumConverter))]publicMyEnumTypes{get;set;}}当WebAPIController发送序列化的Foo对象时,它们可能看起来像这样:{"Type":"TypeTwo"}我的问题:是否可以将序列

c# - : Dictionary<string, object> 或 Dictionary<enum,object> 哪个更快/更有效?

enum类型用作字典键时是否比string类型更快/更有效?IDictionaryorIDictionary事实上,哪种数据类型最适合作为字典键,为什么?请考虑以下事项:注意:为简单起见,只有5个属性structMyKeys{publicstringIncomplete="IN";publicstringSubmitted="SU";publicstringProcessing="PR";publicstringCompleted="CO";publicstringClosed="CL";}和enumMyKeys{Incomplete,Submitted,Processing,Comp

c# - 添加枚举值会破坏二进制兼容性吗?

想象一下DLL中的这个枚举。publicenumColors{Red,Green}添加枚举值会破坏二进制兼容性吗?如果我要更改它,现有的EXE会损坏吗?publicenumColors{Red,Green,Blue}我看到了thisanswer,但它似乎解决了插入值的问题。如果我将值添加到仅结尾,可以吗? 最佳答案 不,这不会破坏二进制兼容性(因为:程序集仍会加载等),因为枚举基本上是整数文字常量。在中间插入值显然是一个非常危险的想法,但您已经排除了它。但是,它可能会导致您需要防范的许多其他问题:一些代码(特别是switch语句)可

c# - 如何将枚举值添加到列表

我有以下枚举:publicenumSymbolWejsciowy{K1,K2,K3,K4,K5,K6,K7,K8}我想使用这个枚举的值创建一个列表:publicListsymbol;我尝试了几种不同的方法来将枚举值添加到列表中:SymbolWejsciowysymbol;symbol.Add(symbol=SymbolWejsciowy.K1);和symbol.Add(SymbolWejsciowy.K1);但是,我总是遇到以下异常:Objectreferencenotsettoaninstanceofanobject.我怎样才能正确地做到这一点? 最佳答案

C# 从整数反序列化枚举

是否可以在C#中从int反序列化枚举。例如如果我有以下类(class):classEmployee{publicstringName{get;set;}publicintEmployeeTypeID{get;set;}}我可以很容易地从XML创建这个JoeBloggs1使用这样的东西:Employeeemployee=(Employee)newXmlSerializer(typeof(Employee)).Deserialize(XmlReader);只需很少的工作,这让我可以使用一个通用服务,通过将选择命令、连接字符串和类型输入到并检索对象数组,我可以将其用于所有数据库对象,而无需进