草庐IT

c# - 契约前置条件引起的IEnumerable多重枚举

我有一个IEnumerable参数,该参数必须是非空的。如果有像下面这样的先决条件,那么集合将在它期间被枚举。但是下次我引用它时它会再次被枚举,从而导致在Resharper中出现“PossiblemultipleenumerationofIEnumerable”的警告。voidProcessOrders(IEnumerableorderIds){Contract.Requires((orderIds!=null)&&orderIds.Any());//enumeratesthecollection//BAD:collectionenumeratedagainforeach(variin

c# - 在 C# 中限制访问枚举参数的最佳实践

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion考虑这个问题String.Splitoverload,它需要一个StringSplitOptions枚举作为参数。枚举本身是公开的并且可供包括System命名空间的所有内容访问,这不是很糟糕吗?我的意思是,枚举完全特定于Split方法的选项,但它在其范围之外可用。也许有更好的方法来对此进行建模,例如将枚举放在String类本身中,然后使用String.SplitOptions访问它?我很少

c# - 外键列可以首先是 Entity Framework 6 代码中的枚举吗?

我首先将EF5DB转换为EF6代码。在旧设置中,有一些FK是字节。并且在应用程序中被映射到带有下划线字节类型的枚举。这一直很有效。首先转到代码和EF6,我发现声称枚举应该“正常工作”,而且对于常规列来说确实如此。我可以从这里开始publicbyteFavPersonality{get;set;}为此:publicPersonalityFavPersonality{get;set;}但是当涉及到也是外键的列时,我得到这个错误:System.ArgumentException:TheResultTypeofthespecifiedexpressionisnotcompatiblewitht

C#:将一个枚举包装在另一个枚举中(即镜像另一个枚举/复制它......)

这是我的问题:我有一个引用DLL的对象。我希望其他对象引用我的对象,而不必同时包含对DLL本身的引用。除了我想复制的DLL中有一个枚举外,这在大多数情况下都很好。我可以逐行写出枚举,但我想知道是否有更好的方法来做到这一点。即。假设DLL有以下枚举:publicenumdllEnum{value1,value2,value3}我可以做以下事情:publicenummyEnum{value1,value2,value3}或者更好:publicenummyEnum{value1=dllEnum.value1,value2=dllEnum.value2,value3=dllEnum.value

c# - 使用枚举类保持枚举到对象的映射?

我经常需要枚举和另一个对象(本例中为字符串)之间的全局硬编码映射。我想将枚举和映射定义放在一起以阐明维护。如您所见,在此示例中,创建了一个带有一个静态字段的令人讨厌的类。publicenumEmailTemplates{//Remembertoeditthecorrespondingmappingsingleton!WelcomeEmail,ConfirmEmail}publicclassKnownTemplates{publicstaticDictionaryKnownTemplates;staticKnownTemplates(){KnownTemplates.Add(EmailT

c# - WPF 如何将带有描述的枚举绑定(bind)到 ComboBox

如何将具有Description(DescriptionAttribute)的enum绑定(bind)到ComboBox?我有一个枚举:publicenumReportTemplate{[Description("Topview")]TopView,[Description("Sectionview")]SectionView}我试过这个:无法成功,有什么简单的解决办法吗?提前致谢! 最佳答案 这可以通过为您的组合框使用转换器和项目模板来完成。这是转换器代码,绑定(bind)到枚举时将返回描述值:namespaceFirmwareU

c# - 在 C# 中使用反射创建具有字符串值的未知枚举实例

当我在运行时拥有枚举的System.Type并检查了BaseType是否为System.Enum时,我在计算如何准确创建枚举实例时遇到了问题,我的值是一个与项目匹配的int值在神秘的枚举中。到目前为止,我的代码只是上面描述的逻辑,如下所示。if(Type.GetType(type)!=null){if(Type.GetType(type).BaseType.ToString()=="System.Enum"){return???;}}在过去使用枚举时,我总是在代码时知道我正在尝试解析哪个枚举,但在这种情况下我很困惑,并且运气不好以谷歌友好的方式阐明我的问题......我通常会这样做像(

c# - 如何使用自定义顺序属性对枚举进行排序?

我有一个这样的枚举:enumMyEnum{[Order(1)]ElementA=1,[Order(0)]ElementB=2,[Order(2)]ElementC=3}我想列出它的元素,按我编写的自定义顺序属性排序,以便我得到一个排序的项目列表。我正在获取描述属性,但只是针对这样一个元素:FieldInfofi=value.GetType().GetField(value.ToString());DescriptionAttribute[]attributes=(DescriptionAttribute[])fi.GetCustomAttributes(typeof(Descripti

c# - 将枚举属性数据绑定(bind)到网格并显示描述

这是与HowtobindacustomEnumdescriptiontoaDataGrid类似的问题,但就我而言,我有多个属性。publicenumExpectationResult{[Description("-")]NoExpectation,[Description("Passed")]Pass,[Description("FAILED")]Fail}publicclassTestResult{publicstringTestDescription{get;set;}publicExpectationResultRequiredExpectationResult{get;set;

c# - 在 C# 中的运行时设置枚举值

有什么方法可以在运行时更改enum值?例如我有以下类型enumMyType{TypeOne,//=5atruntimeTypeTwo//=3atruntime}我想在运行时将5设置为TypeOne,将3设置为TypeTwo。 最佳答案 正如其他人所指出的,答案是否定的。但是您可以重构您的代码以改用类:publicsealedclassMyType{publicintTypeOne{get;set;}publicintTypeTwo{get;set;}}...varmyType=newMyType{TypeOne=5,TypeTwo=