我有以下枚举:
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) 我有一个组合框,我在其中显示一些条目,如:
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条件?
希望快点.
这是一个有效的枚举
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)
有没有办法可以在枚举中使用数字.我已经有了代码来填充枚举下拉列表,所以它会非常方便
我有一个类似的枚举
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)