相关疑难解决方法(0)

枚举的字符串表示形式

我有以下枚举:

public enum AuthenticationMethod
{
    FORMS = 1,
    WINDOWSAUTHENTICATION = 2,
    SINGLESIGNON = 3
}
Run Code Online (Sandbox Code Playgroud)

然而问题是,当我要求AuthenticationMethod.FORMS而不是id 1时,我需要"FORMS"这个词.

我找到了以下解决此问题的方法(链接):

首先,我需要创建一个名为"StringValue"的自定义属性:

public class StringValue : System.Attribute
{
    private readonly string _value;

    public StringValue(string value)
    {
        _value = value;
    }

    public string Value
    {
        get { return _value; }
    }

}
Run Code Online (Sandbox Code Playgroud)

然后我可以将此属性添加到我的枚举器:

public enum AuthenticationMethod
{
    [StringValue("FORMS")]
    FORMS = 1,
    [StringValue("WINDOWS")]
    WINDOWSAUTHENTICATION = 2,
    [StringValue("SSO")]
    SINGLESIGNON = 3
}
Run Code Online (Sandbox Code Playgroud)

当然我需要一些东西来检索StringValue:

public static class StringEnum
{
    public static string GetStringValue(Enum value)
    { …
Run Code Online (Sandbox Code Playgroud)

c# enums

897
推荐指数
19
解决办法
75万
查看次数

将枚举与C#中的字符串相关联

我知道以下是不可能的,因为它必须是一个int

enum GroupTypes
{
    TheGroup = "OEM",
    TheOtherGroup = "CMB"
}
Run Code Online (Sandbox Code Playgroud)

从我的数据库中我得到一个包含不全面代码的字段(OEM和CMB).我想把这个领域变成一个枚举或其他可以理解的东西.因为目标是可读性,所以解决方案应该简洁.
我还有其他选择吗?

.net c#

298
推荐指数
15
解决办法
29万
查看次数

我的枚举可以有友好的名字吗?

我有以下内容 enum

public enum myEnum
{
    ThisNameWorks, 
    This Name doesn't work
    Neither.does.this;
}
Run Code Online (Sandbox Code Playgroud)

enum带有"友好名字"的s 不可能吗?

c# enums

170
推荐指数
7
解决办法
15万
查看次数

如何为enum值设置枚举绑定组合框以及自定义字符串格式?

在帖子Enum ToString中,描述了一个方法来使用自定义属性,DescriptionAttribute如下所示:

Enum HowNice {
  [Description("Really Nice")]
  ReallyNice,
  [Description("Kinda Nice")]
  SortOfNice,
  [Description("Not Nice At All")]
  NotNice
}
Run Code Online (Sandbox Code Playgroud)

然后,GetDescription使用如下语法调用函数:

GetDescription<HowNice>(NotNice); // Returns "Not Nice At All"
Run Code Online (Sandbox Code Playgroud)

但是,当我想简单地使用枚举值填充ComboBox时GetDescription,这并没有真正帮助我,因为我不能强制ComboBox调用.

我想要的是有以下要求:

  • 读取(HowNice)myComboBox.selectedItem将返回所选值作为枚举值.
  • 用户应该看到用户友好的显示字符串,而不仅仅是枚举值的名称.因此NotNice,用户不会看到" Not Nice At All" 而是看到" ".
  • 希望解决方案需要对现有枚举进行最少的代码更改.

显然,我可以为我创建的每个枚举实现一个新类,并覆盖它ToString(),但这对每个枚举来说都是很多工作,我宁愿避免这样做.

有任何想法吗?

哎呀,我甚至会一个拥抱作为赏金:-)

c# enums combobox

134
推荐指数
8
解决办法
8万
查看次数

如何用字符串值定义枚举?

我正在尝试定义Enum并添加在CSV或类似文件中使用的有效公共分隔符.然后我将它绑定到一个ComboBox数据源,所以每当我从Enum定义中添加或删除时,我都不需要在组合框中更改任何内容.

问题是我如何用字符串表示定义枚举,如:

public enum SeparatorChars{Comma = ",", Tab = "\t", Space = " "}

c# string enums

81
推荐指数
11
解决办法
30万
查看次数

c#switch语句返回适合替换break

这是处理c#switch语句的合适方法还是需要显式中断? 参考

  public static string ToRegistryString(AliceKey.AliceKeyPaths aliceKeyPath)
    {
     switch (aliceKeyPath)
        {
            case AliceKey.AliceKeyPaths.NET_CLR_DATA:
                return @"\.NET CLR Data\";
            case AliceKey.AliceKeyPaths.NET_CLR_NETWORKING:
                return @"\.NET CLR Networking\";
            case AliceKey.AliceKeyPaths.NET_DATA_PROVIDER_MSSQL:
                return @"\.NET Data Provider for SqlServer\";
            case AliceKey.AliceKeyPaths.NET_DATA_PROVIDER_ORACLE:
                return @"\.NET Data Provider for Oracle\";
         }
       return new string(new char[0]);
     }
Run Code Online (Sandbox Code Playgroud)

c# case switch-statement

30
推荐指数
2
解决办法
2万
查看次数

为什么"并非所有代码路径都返回一个值",带有switch语句和枚举?

我有以下代码:

public int Method(MyEnum myEnum)
{
    switch (myEnum)
    {
        case MyEnum.Value1: return 1;
        case MyEnum.Value2: return 2;
        case MyEnum.Value3: return 3;
    }
}

public enum MyEnum
{
    Value1,
    Value2,
    Value3
}
Run Code Online (Sandbox Code Playgroud)

我得到错误:"Not all code paths return a value".我不明白该switch声明如何不能跳转到指定的情况之一.

可以将enum某种方式null

.net c# enums visual-studio-2008 c#-3.0

27
推荐指数
2
解决办法
7280
查看次数

为什么默认枚举值为0而不是最小值?

在C#中将'0'作为枚举的默认值有什么意义?如果我声明以不同数字开头的枚举:

enum Color
{
   Blue = 1,
   Green,
   Red,
}
Run Code Online (Sandbox Code Playgroud)

然后var color = default(Color)- 将返回'0'.我希望看到最小值.如果枚举的每个成员对应于某个特定数字并且"0"不是有效值,则此行为可能会导致问题.

c# enums

16
推荐指数
3
解决办法
9484
查看次数

C#中属性的目的是什么?

  • C#中属性的目的是什么?

  • 我如何知道哪个属性必须用于特定功能?

  • 如何在c#中动态添加它们?

  • 什么是自定义属性?

.net c# attributes class

12
推荐指数
3
解决办法
5355
查看次数

在单词之间的字符串中添加空格

尝试设置一个枚举,在属性中有空格,但非常难,所以认为他们可能是一个简单的方法来破解这个字符串格式或东西,因为他们只有一个我需要的枚举有空格我知道它究竟是什么.任何帮助都可以为此字符串添加空格

public class Address
{
...blah...more class datatypes here...

public AddressType Type { get; set; }  //AddressType is an enum

...blah....
}



 if (Address.Type.ToString() == "UnitedStates")
        {
           **Add space between United and States**
        }
Run Code Online (Sandbox Code Playgroud)

c# string-formatting

11
推荐指数
2
解决办法
1万
查看次数