19

私はかなり楽しい問題を抱えていますが、このアプローチを使用しても解決できるかどうかはわかりません。

すべて小文字の文字列があります。それをビジネス法と呼びましょう。これで、値がBusinessLawである列挙型があります。

私がやりたいことは、businesslaw 文字列を BusinessLaw 列挙型に変換することです。

通常、私はこれを行うことでそれにアプローチします:

return (EnumType) (Enum.Parse(typeof (EnumType), value));

ただし、場合によってはそれができません。

この問題をどのように解決しますか? それとも、それは本質的に解決できないものですか?

4

1 に答える 1

33

のオーバーロードをEnum.Parse最後のパラメーターで使用して、大文字と小文字の区別を示すことができます。

return (EnumType) (Enum.Parse(typeof (EnumType), value, true));

同様のTryParseオーバーロードがあります。

ただし、大文字と小文字以外の同じ名前の複数の列挙値が存在する可能性があることに注意してください。

public enum Awkward
{
    FOO,
    foo,
    Foo,
    fOO
}

可能であれば、そのような列挙値を持つことはおそらく避けるべきです:)

于 2013-10-12T15:57:57.777 に答える