TL;DR
- Enum.TryParse は .NET 4.0 以降の機能なので、 .NET 3.5 な Unity では使えない
- ソレっぽいスクリプト書くしかない
Enum.TryParse とは?
- 文字列を任意の
enum
にパースするメソッド bool Enum.TryParse<T>(string stringValue, out T enumValue)
ってな感じのシグネチャ- 引数はパースしたい文字列とパース結果の enum 型を格納する変数
- 戻り値はパースに成功したかどうか
使い方はこんな感じ
class Sample { enum Hoge { Unknown, Foo, Bar, } void Fuga() { Hoge hoge; if (!Enum.TryParse("Fuga", out hoge)) { hoge = Hoge.Unknown; } } }
そもそも enum の文字列表現をそのまま利用するのはどうなんだ?みたいな話もあるが、まぁそれは横に置いておく。
何で使えないの?
じゃあどうする?
ないなら作りましょう
使い方
using ForwardCompatibility; class Sample { enum Hoge { Unknown, Foo, Bar, } void Fuga() { Hoge hoge; if (!Enum.TryParse("Fuga", out hoge)) { hoge = Hoge.Unknown; } } }
ポイント
ForwardCompatibility
という namespace を切りました。using ForwardCompatibility;
とすることでそのままEnum.TryParse
と記述可能です。- 反面、元々の
System.Enum
のメソッドが使えなくなるので、 using するか完全修飾するかは貴方次第です。
- 反面、元々の
- Generics を使わずに
typeof(Hoge)
的な引数を受け付けるメソッド作ろうかと思ったけど、メンドイのでやめた。