我想完成一个非常简单的任务,但是要做的是以一种很好,简单的方式来做到这一点。我们都希望编写易于维护,易于理解的漂亮代码。我有一个经验丰富的C#开发人员可以帮助我的问题。

我想创建一个dictionary,其中keysstring[])是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);


您(经验丰富的开发人员)将如何解决该问题以更清晰地编写它?也许枚举有一个窍门,可以快速查找,例如“给我一个满足我条件的枚举”。

最佳答案

要获取字符串并将其转换为匹配的枚举值,或者如果没有匹配的枚举值甚至失败,则应使用Enum.TryParse

Animals animal;
if (Enum.TryParse("Dog", out animal))
    // animal now contains Animals.Dog
else
    // animal "undefined", there was no matching enum value

10-06 07:51
查看更多