相关疑难解决方法(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#中枚举转换的字符串

我有一个组合框,我在其中显示一些条目,如:

Equals
Not Equals 
Less Than
Greater Than
Run Code Online (Sandbox Code Playgroud)

请注意,这些字符串包含空格.我有一个定义的枚举,它匹配这些条目,如:

enum Operation{Equals, Not_Equals, Less_Than, Greater_Than};
Run Code Online (Sandbox Code Playgroud)

由于不允许空间,我使用了_字符.

现在,有没有办法将给定的字符串自动转换为枚举元素而无需在C#中编写循环或一组if条件?

c# enums

39
推荐指数
4
解决办法
5万
查看次数

C#使用枚举中的数字

希望快点.

这是一个有效的枚举

public enum myEnum
{
  a= 1,
  b= 2,
  c= 3,
  d= 4,
  e= 5,
  f= 6,
  g= 7,
  h= 0xff
};
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

public enum myEnum
{
  1a = 1,
  2a = 2,
  3a = 3,
};
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在枚举中使用数字.我已经有了代码来填充枚举下拉列表,所以它会非常方便

c# syntax enums

36
推荐指数
4
解决办法
6万
查看次数

如何为枚举提供用户友好名称?

我有一个类似的枚举

Enum Complexity
{
  NotSoComplex,
  LittleComplex,
  Complex,
  VeryComplex
}
Run Code Online (Sandbox Code Playgroud)

我想在下拉列表中使用它,但不希望在列表中看到这样的Camel名称(对用户来说看起来很奇怪).相反,我希望有正常的措辞,如不那么复杂的小复杂(等)

此外,我的应用程序是多语言,我希望能够显示这些字符串本地化,我使用帮助器,TranslationHelper(字符串strID),它给我一个字符串ID的本地化版本.

我有一个工作的解决方案,但不是很优雅:我为枚举创建一个辅助类,其中一个成员Complexity和ToString()被覆盖,如下所示(代码简化)

public class ComplexityHelper
{
    public ComplexityHelper(Complexity c, string desc)
    { m_complex = c; m_desc=desc; }

    public Complexity Complexity { get { ... } set {...} }
    public override ToString() { return m_desc; }

    //Then a static field like this 

    private static List<Complexity> m_cxList = null;

    // and method that returns the status lists to bind to DataSource of lists
    public static List<ComplexityHelper> GetComplexities() 
    {
        if (m_cxList == null) …
Run Code Online (Sandbox Code Playgroud)

.net c# enums localization naming-conventions

21
推荐指数
3
解决办法
1万
查看次数

标签 统计

c# ×4

enums ×4

.net ×1

localization ×1

naming-conventions ×1

syntax ×1