草庐IT

c# - 枚举和属性命名冲突

当使用具有枚举属性的类时,通常会在属性名称和枚举类型之间发生命名冲突。示例:enumDay{Monday,Tuesday,...}classMyDateClass{privateDayday;publicDayDay{get{returnday;}}}因为只有标志枚举应该有复数名称,所以将枚举命名为“Days”不是非标志枚举的方式。在上面的示例中,您可以为枚举或属性使用一些变体,例如“WeekDay”。但在一般情况下,没有像这样好的变体,因此您最终会为具有Foo和Bar类型枚举属性的对象使用诸如“FooMode”或“BarKind”之类的属性。不太优雅。在这种情况下,您通常如何命名枚举

c# - 非唯一枚举值

我试图模糊edi文件上的索引位置...我遇到过这样一种情况,根据情况,索引中可能有2或3个东西。使用枚举来隐藏“魔数(MagicNumber)”会很酷,并且惊讶地发现您可以像这样将多个枚举分配给相同的值:publicenumColor{Red=1,Blue=1,Green=1}编译器对此很满意。我没想到这会奏效。我不需要转换回枚举,所以我不担心尝试返回,但这闻起来很时髦。为什么CLR允许枚举有多个值,我应该为此使用结构吗?(结构似乎比枚举更重,这似乎有效) 最佳答案 实际上您已经定义了一个结构...在幕后,枚举只是一个结构(但它派生

c# - 非唯一枚举值

我试图模糊edi文件上的索引位置...我遇到过这样一种情况,根据情况,索引中可能有2或3个东西。使用枚举来隐藏“魔数(MagicNumber)”会很酷,并且惊讶地发现您可以像这样将多个枚举分配给相同的值:publicenumColor{Red=1,Blue=1,Green=1}编译器对此很满意。我没想到这会奏效。我不需要转换回枚举,所以我不担心尝试返回,但这闻起来很时髦。为什么CLR允许枚举有多个值,我应该为此使用结构吗?(结构似乎比枚举更重,这似乎有效) 最佳答案 实际上您已经定义了一个结构...在幕后,枚举只是一个结构(但它派生

c# - C# 中的成对迭代或滑动窗口枚举器

如果我有一个像这样的IEnumerable:string[]items=newstring[]{"a","b","c","d"};我想遍历所有成对的连续项目(大小为2的滑动窗口)。这将是("a","b"),("b","c"),("c","d")我的解决方案是这样的publicstaticIEnumerable>Pairs(IEnumerableenumerable){IEnumeratore=enumerable.GetEnumerator();e.MoveNext();Tcurrent=e.Current;while(e.MoveNext()){Tnext=e.Current;yie

c# - C# 中的成对迭代或滑动窗口枚举器

如果我有一个像这样的IEnumerable:string[]items=newstring[]{"a","b","c","d"};我想遍历所有成对的连续项目(大小为2的滑动窗口)。这将是("a","b"),("b","c"),("c","d")我的解决方案是这样的publicstaticIEnumerable>Pairs(IEnumerableenumerable){IEnumeratore=enumerable.GetEnumerator();e.MoveNext();Tcurrent=e.Current;while(e.MoveNext()){Tnext=e.Current;yie

c# - 如何使用 Automapper 在两个枚举之间进行映射?

我有一个面向公众的界面,我试图将两个不同的枚举相互映射。我尝试使用以下代码:Mapper.CreateMap();当那行不通时,我尝试了:Mapper.CreateMap().ConvertUsing(x=>(Common.ValidationResultType)((int)x));但这似乎也行不通。无论如何让自动映射器来处理这种情况? 最佳答案 除了编写自定义转换器,只需使用ConvertUsing()Mapper.CreateMap().ConvertUsing((value,destination)=>{switch(val

c# - 如何使用 Automapper 在两个枚举之间进行映射?

我有一个面向公众的界面,我试图将两个不同的枚举相互映射。我尝试使用以下代码:Mapper.CreateMap();当那行不通时,我尝试了:Mapper.CreateMap().ConvertUsing(x=>(Common.ValidationResultType)((int)x));但这似乎也行不通。无论如何让自动映射器来处理这种情况? 最佳答案 除了编写自定义转换器,只需使用ConvertUsing()Mapper.CreateMap().ConvertUsing((value,destination)=>{switch(val

c# - 与 WCF 服务共享枚举

我有几个不同的应用程序,我想在其中共享一个C#枚举。我不太清楚如何在常规应用程序和WCF服务之间共享枚举声明。情况是这样的。我有2个轻量级C#destop应用程序和一个WCFweb服务,它们都需要共享枚举值。客户1有Method1(MyEnume,stringsUserId);客户2有Method2(MyEnume,stringsUserId);网络服务有ServiceMethod1(MyEnume,stringsUserId,stringsSomeData);虽然我最初是创建一个名为Common.dll的库来封装枚举,然后在需要枚举的所有项目中引用该库。但是,WCF使事情变得困难,因

c# - 与 WCF 服务共享枚举

我有几个不同的应用程序,我想在其中共享一个C#枚举。我不太清楚如何在常规应用程序和WCF服务之间共享枚举声明。情况是这样的。我有2个轻量级C#destop应用程序和一个WCFweb服务,它们都需要共享枚举值。客户1有Method1(MyEnume,stringsUserId);客户2有Method2(MyEnume,stringsUserId);网络服务有ServiceMethod1(MyEnume,stringsUserId,stringsSomeData);虽然我最初是创建一个名为Common.dll的库来封装枚举,然后在需要枚举的所有项目中引用该库。但是,WCF使事情变得困难,因

c# - C# 中的字典枚举

我在网上搜索过这个,但找不到我要找的答案。基本上我有以下枚举:publicenumtypFoo:int{itemA:1,itemB:2itemC:3}如何将此枚举转换为字典,以便它存储在以下字典中?DictionarymyDic=newDictionary();myDic看起来像这样:1,itemA2,itemB3,itemC有什么想法吗? 最佳答案 尝试:vardict=Enum.GetValues(typeof(fooEnumType)).Cast().ToDictionary(t=>(int)t,t=>t.ToString()