我想要完成一个非常简单的任务,但事情是以一种简单的方式做到这一点。我们都希望编写易于维护,快速理解的漂亮代码。我有一个经验丰富的C#开发人员可以帮助我的问题。
我想创建一个dictionary
,其中keys
(string[]
)的名称为enum values
,values
是他们的生态响应enum values
。如果这令人困惑,请允许我举一个简短的例子:
enum Animals
{
Dog,
Cat,
Fish
}
Dictionary<string, Animals> result = new Dictionary<string, Animals>()
{
{ "Dog", Animals.Dog },
{ "Cat", Animals.Cat },
{ "Fish", Animals.Fish }
};
这是我的方法:
一点延伸:
public static IEnumerable<T> GetValues<T>() => Enum.GetValues(typeof(T)).Cast<T>();
然后施工:
var result = Utils
.GetValues<Animals>()
.ToDictionary(x => x.ToString(), x => x);
经验丰富的开发者如何以更清晰的方式解决这个问题呢?或者也许有一个枚举的技巧可以实现快速查找,例如“ 给我一个枚举,哪个名字符合我的条件 ”。
答案 0 :(得分:3)
获取字符串并将其转换为匹配的枚举值,如果没有匹配的枚举值,甚至会失败,您应该使用Enum.TryParse:
Animals animal;
if (Enum.TryParse("Dog", out animal))
// animal now contains Animals.Dog
else
// animal "undefined", there was no matching enum value
答案 1 :(得分:2)
我认为您正在寻找Parse
类型的Enum
方法。
var value = Enum.Parse(typeof(T), "Dog");