草庐IT

c# - 我可以将枚举传递给 Controller ​​以便模型绑定(bind)器绑定(bind)它吗?

如果是这样,我应该如何传递参数?匹配枚举名称的字符串可以吗?如果我要传递匹配枚举项的下拉框,这会很方便。使用thisanswer中提供的解决方案会很有用如果我在提交回数据时可以轻松地绑定(bind)到枚举。 最佳答案 是的,当有这样的Controller时:enumMyAction{Lalala}publicActionResultIndex(MyActionaction){...}您只需执行Index/Lalala,一切正常。如果您需要更复杂的绑定(bind)(比如将某个字符串值映射到一个复杂的类),请使用类似StructureM

c# - 具有重复值的枚举的 GetName

如果我在C#枚举中有重复值,说enumMyE{value1=1,value2=2,valued=1}以下字符串的值应该是什么?MyEN=(MyE)1;stringV1=N.ToString();stringV2=GetName(MyE,1);V1和V2必须包含相同的值是真的吗?这些值应该是什么?我没有在MSDN或这里找到任何关于重复枚举的“解引用”,如果我错过了,请给我指向一个链接。 最佳答案 实验表明:V1="value1"和V2="value1"但是,这并不能保证。MSDNpageonEnum.GetName状态:Ifmulti

c# - 我应该将枚举 ID/值存储在数据库中还是 C# 枚举中?

假设我的数据库表有UserType、SalesType等列我应该拥有包含UserTypeID、userTypeName的数据库表还是应该只创建一个C#枚举? 最佳答案 两者有什么问题?如果值是用户定义的或不断变化的,enum肯定不适合。如果值严格不变(例如性别),您可以将它们作为enums以便于在应用程序中引用,也可以在数据库中作为单独的表来强制执行外键和作为一个引用。 关于c#-我应该将枚举ID/值存储在数据库中还是C#枚举中?,我们在StackOverflow上找到一个类似的问题:

c# - 具有默认值的 Asp.net webapi 枚举参数

我有一个Controller[HttpGet][RoutePrefix("api/products/{productId}")]publicHttpResponseMessageProducts(intproductId,TypeEnumptype=TypeEnum.Clothes){if(!Enum.IsDefined(typeOf(TypeEnum),ptype))//throwbadrequestexceptionelse//continueprocessing}Myenum声明为publicTypeEnum{Clothes,Toys,Electronics}目前,如果传递了一些

c# - XmlSerialize 枚举标志字段

我有这个:[Flags]publicenumInfoAbonne{civilite,name,firstname,email,adress,country}publicclassFormulaire{privateInfoAbonne_infoAbonne{get;set;}publicFormulaire(){}}我想Xml序列化Formulaire如果我初始化:_infoAbonne=InfoAbonne.name|InfoAbonne.email;在我的Xml结果中,我只得到:email 最佳答案 即使您将Flags属性添加到

c# - 列表的每个枚举都是线程安全的

我需要枚举对象的通用IList。列表的内容可能会改变,就像被其他线程添加或删除一样,这将终止我的枚举,并显示“集合已修改;枚举操作可能无法执行。”在IList上执行线程安全foreach的好方法是什么?最好不要克隆整个列表。无法克隆列表引用的实际对象。 最佳答案 克隆列表是最简单和最好的方法,因为它可以确保您的列表不会因您而异。如果列表太大而无法克隆,请考虑在其周围放置一个必须在读取/写入之前获取的锁。 关于c#-列表的每个枚举都是线程安全的,我们在StackOverflow上找到一个类

c# - 在 GAC 中枚举程序集

如何在C#中枚举GAC中的所有可用程序集?实际上,我正面临一个愚蠢代码的问题——名为Telerik.Web.UI.dll的程序集在项目中被引用和使用——这个特定的DLL不存在于BIN文件夹中。应用程序在服务器上运行良好-但在我的机器上,显然编译器出错。Ex-Developer坚持认为它不在服务器上的GAC中,并且“它就是这样”。现在我需要检查这个DLL是否在GAC中注册。帮助将不胜感激。美好的一天; 最佳答案 如果您对服务器的访问权限有限,那么这可能有效://ListofallthedifferenttypesofGACfolder

C# - 检查属性是否存在于枚举的元素上

我遇到了如下情况:enumHeader{Sync,[OldProtocol]Keepalive,Ping,[OldProtocol]Auth,[OldProtocol]LoginData//...}我需要获取定义了OldProtocolAttribute的元素数组。我注意到Attribute.IsDefined()方法及其重载显然不支持这种情况。我的问题是:有没有办法在解决方案的任何部分不使用typeof(Header).GetField()的情况下解决问题?如果不是,解决它的最佳方法是什么? 最佳答案 据我所知,您必须从字段中获取

C# 或 VB.NET - 迭代所有公共(public)枚举

我们的源代码中有一个通用组件,它包含一个非常大的应用程序的所有枚举(大约300个!)。有没有什么方法可以使用C#或VB.NET遍历所有这些对象以便对每个对象执行一个操作?问题Howtoiterateall“publicstring”propertiesina.netclass几乎是相关的,但我正在处理的枚举是多种类型的混合 最佳答案 类似的东西?varquery=Assembly.GetExecutingAssembly().GetTypes().Where(t=>t.IsEnum&&t.IsPublic);foreach(Type

c# - C# 枚举类型安全吗?

C#枚举类型安全吗?如果不是,会有什么影响? 最佳答案 给出一个稍微不同的答案......虽然从转换的角度来看这些值是类型安全的,但一旦它们被转换它们仍然没有被检查-即enumFoo{A=1,B=2,C=3}staticvoidMain(){Foofoo=(Foo)500;//worksfineConsole.WriteLine(foo);//alsofine-shows500}因此,您应该注意检查值-例如default在switch抛出异常。您还可以通过以下方式检查(对于非[Flags]值):boolisValid=Enum.Is