降低字符串时解析枚举

Lar*_*ard 15 .net c# enums .net-4.5

我有一个非常有趣的问题,我不确定你甚至可以使用这种方法解决.

我有一些字符串,全部是小写的.我们称之为businesslaw.现在,我有一个枚举类型,其值为BusinessLaw.

我想要做的是将businesslaw字符串转换为BusinessLaw枚举类型.

通常我会通过这样做来接近它:

return (EnumType) (Enum.Parse(typeof (EnumType), value));
Run Code Online (Sandbox Code Playgroud)

但是,当存在一些案例差异时,这是不可能的.

你会如何解决这个问题?或者它是天生的,不可解决的?

Jon*_*eet 25

您可以使用带有最终参数的重载Enum.Parse来指示区分大小写:

return (EnumType) (Enum.Parse(typeof (EnumType), value, false));
Run Code Online (Sandbox Code Playgroud)

有类似的TryParse超载.

但是,请记住,除了大小写之外,可能存在多个具有相同名称的枚举值:

public enum Awkward
{
    FOO,
    foo,
    Foo,
    fOO
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,你应该避免使用这样的枚举值:)