私はファイルの内容を読んでいて、このような正確な場所で文字列を取得します
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);
出力は常にOk
またはErr
のいずれかになります
反対側には、MyObject
があり、ContentEnum
は次のようになっています。
public class MyObject
{
public enum ContentEnum { Ok = 1, Err = 2 };
public ContentEnum Content { get; set; }
}
さて、クライアント側では、このようなコードを使用したい(文字列fileContentMessage
をContent
プロパティにキャストする)
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);
MyObject myObj = new MyObject ()
{
Content = /// ///,
};
Enum.Parse()
を使用します。
var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);
さらに、既に提供されているEnum.Parse
回答を受け取り、ヘルパークラスの使いやすい静的メソッドに入れることができます。
public static T ParseEnum<T>(string value)
{
return (T)Enum.Parse(typeof(T), value, ignoreCase: true);
}
そして次のように使用します:
{
Content = ParseEnum<ContentEnum>(fileContentMessage);
};
解析する(異なる)列挙がたくさんある場合に特に役立ちます。
.NET 4.0+には汎用 Enum.TryParse があります
ContentEnum content;
Enum.TryParse(fileContentMessage, out content);
のようなものを使用して見てください
1つ以上の列挙定数の名前または数値の文字列表現を、同等の列挙オブジェクトに変換します。パラメーターは、操作で大文字と小文字を区別するかどうかを指定します。戻り値は、変換が成功したかどうかを示します。
または
1つ以上の列挙定数の名前または数値の文字列表現を、同等の列挙オブジェクトに変換します。