草庐IT

c# - 如何避免代码中枚举值与数据库中相应值之间的依赖关系?

我有许多用户权限,这些权限在我的ASP.NET应用程序中经过测试。这些权限值在枚举中引用,这样我就可以像这样方便地测试权限:btnCreate.Enabled=PermissionManager.TestPermission(Permission.AllowCreate);但是,我也将这些权限存储在数据库中,因为我需要保存有关它们的更多信息,而不仅仅是它们的ID。但这在枚举值和数据库中的值之间产生了可怕的依赖性,对任何一个的更改都经过深思熟虑,我在整个应用程序中都遇到了问题。有没有更好的方法解决这个问题?以前有人处理过这个问题吗? 最佳答案

c# - Windows.Forms.MouseButtons 中的奇数枚举值

我在System.Windows.Forms命名空间中找到了这个gem(IMO)。我正在努力弄清楚为什么要这样设置。[Flags]publicenumMouseButtons{None=0,Left=1048576,Right=2097152,Middle=4194304,XButton1=8388608,XButton2=16777216,}有人可以解释为什么它使用这些值(2^20到2^24的幂)而不是这个:publicenumMouseButtons{None=0,Left=1,//2^0Right=2,//2^1Middle=4,//2^2XButton1=8,//2^3XBut

c# - 为什么枚举中不允许​​字段引用(或者这是编译器错误?)

当我使用下面的代码时:usingSystem;namespaceFoo{[Flags]publicenumBar:ulong{None=0x0000000000000000,A=0x8000000000000000,B=0x0000000000000001L|A,C=0x0000000000000002L|B,D=0x0000000000000004L|A,All=A|B|C|D}}单声道编译器崩溃。这是由于语义错误(语言中不允许的错误)造成的,但编译器没有注意到,还是编译器错误?版本:Mono2.10.8.1我已经在bugzilla(https://bugzilla.xamarin.

c# - 如何命名一组旗帜?

例如我有以下标志枚举:[Flags]publicenumColors{Red=1,Green=2,Blue=4}根据MSGuidelines:DOnameflagenumswithpluralnounsornounphrasesandsimpleenumswithsingularnounsornounphrases.所以我在这里使用了复数形式。现在,有anotherguideline以复数形式命名您的收藏:DOnamecollectionpropertieswithapluralphrasedescribingtheitemsinthecollectioninsteadofusinga

c# - 如何向枚举添加多个属性?

我有一个名为ClientCreditResolutionPlanActionType的SQL查找表,我想将其转换为enum在c#.非常基本的要求,对吧?对。我的table,现在enum,但是,有多个列,或者现在,描述属性需要与它一起使用:状态图标状态文本打字所以我想我可以做...namespaceSystem.ComponentModel{classStatusIconAttribute:Attribute{publicstringStatusIcon;publicStatusIconAttribute(stringstatusIcon){StatusIcon=statusIcon;}

c# - 为什么 C# 对同一类型的不同值的重载方法调用不同?

我对c#方法重载和调用解析有一个疑问。假设我有以下C#代码:enumMyEnum{Value1,Value2}publicvoidtest(){method(0);//thiscallsmethod(MyEnum)method(1);//thiscallsmethod(object)}publicvoidmethod(objecto){}publicvoidmethod(MyEnume){}请注意,我知道如何使其工作,但我想知道为什么对于int(0)的一个值它调用一种方法而对于另一个(1)它调用另一个方法。这听起来很尴尬,因为这两个值具有相同的类型(int),但它们针对不同的方法“链接

c# - 如何在不装箱的情况下比较 System.Enum 和枚举(实现)?

如何在不装箱的情况下将System.Enum与enum进行比较?例如,如何在不装箱enum的情况下使以下代码工作?enumColor{Red,Green,Blue}...System.EnummyEnum=GetEnum();//ReturnsaSystem.Enum.//MaybeaColor,maybesomeotherenumtype....if(myEnum==Color.Red)//ERROR!{DoSomething();}具体而言,此处的目的不是比较基础值。在这种情况下,基本值(value)并不重要。相反,如果两个枚举具有相同的基础值,如果它们是两种不同类型的枚举,则不应

C#枚举到字符串自动转换?

是否可以让编译器自动将我的枚举值转换为字符串,这样我就可以避免每次都显式调用ToString方法。这是我想做的一个例子:enumRank{A,B,C}RankmyRank=Rank.A;stringmyString=Rank.A;//Error:Cannotimplicitlyconverttype'Rank'to'string'stringmyString2=Rank.A.ToString();//OK:butisextrawork 最佳答案 没有。枚举是它自己的类型,所以如果你想将它转换成其他类型,你必须做一些工作。但是,根据您

c# - 到处查找枚举转换为字符串

我目前正试图在解决方案中的任何地方找到将特定枚举转换为字符串的地方,无论是否显式调用了ToString()。(这些被替换为使用枚举描述的转换以改进混淆。)示例:我想找到诸如stringstr="Value:"+SomeEnum.someValue;这样的代码我尝试用包含隐式转换到枚举类型并覆盖包装类中的ToString()的包装类替换枚举本身,但是当我尝试搜索ToString()覆盖的使用时,它给了我一个列表解决方案中对任何内容调用ToString()的地方(并且仅在明确调用它的地方)。搜索是在VisualStudio中使用ReSharper完成的。还有其他方法可以找到这些枚举到字符串

C# 通用枚举转换为特定枚举

我有接受"T"类型的通用方法,这是枚举器。在方法内部,我必须调用辅助类方法,方法名称取决于枚举器的类型。publicMeth(Ttype){if(typeof(T)==typeof(FirstEnumType)){FirstEnumTypet=???//IsomehowneedtoconvertTtypetoFirstEnumTypethis.helperFirstCalcBll(t);}else{SecondEnumTypet=???//IsomehowneedtoconvertTtypetoSecondEnumTypethis.helperSecondCalcBll(t);}}