gpt4 book ai didi

c# - 带空格的枚举 .TryParse 不起作用 - C#

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:24 26 4
gpt4 key购买 nike

我有一个枚举类型,它有带空格的项目

     public enum Enum1
{
[Description("Test1 Enum")]
Test1Enum,
[Description("Test2 Enum")]
Test2Enum,
[Description("Test3Enum")]
Test3Enum,
}

public void TestMethod(string testValue)
{
Enum1 stEnum;
Enum.TryParse(testValue, out stEnum);
switch (stEnum)
{
case ScriptQcConditonEnum.Test1Enum:
Console.Log("Hi");
break;
}
}

当我使用 Enum.TryParse(testValue, out stEnum) 时,它总是返回第一个元素。

 // Currently stEnum returns Test1Enum which is wrong
Enum.TryParse("Test2 Enum", out stEnum)

最佳答案

您可以从枚举描述中解析枚举,但您需要从描述中检索枚举值。请检查下面的示例,它从枚举描述中检索枚举值并根据需要对其进行解析。

枚举描述中的枚举值:

public T GetValueFromDescription<T>(string description)
{
var type = typeof(T);
if (!type.IsEnum) throw new InvalidOperationException();
foreach (var field in type.GetFields())
{
var attribute = Attribute.GetCustomAttribute(field,
typeof(DescriptionAttribute)) as DescriptionAttribute;
if (attribute != null)
{
if (attribute.Description == description)
return (T)field.GetValue(null);
}
else
{
if (field.Name == description)
return (T)field.GetValue(null);
}
}
throw new ArgumentException("Not found.", "description");
// or return default(T);
}

解析示例:

Enum.TryParse(GetValueFromDescription<Enum1>("Test2 Enum").ToString(), out stEnum);

关于c# - 带空格的枚举 .TryParse 不起作用 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42257149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com