75

私はファイルの内容を読んでいて、このような正確な場所で文字列を取得しています

 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; }
    }

さて、クライアント側では、このようなコードを使用したいと思います(文字列fileContentMessageContentプロパティにキャストするため)

string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);

    MyObject myObj = new MyObject ()
    {
       Content = /// ///,
    };
4

4 に答える 4

174

を使用しEnum.Parse()ます。

var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);
于 2012-12-20T10:40:14.650 に答える
26

さらに、Enum.Parse既に提供されている回答をヘルパー クラスの使いやすい静的メソッドに入れることができます。

public static T ParseEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value, ignoreCase: true);
}

そして、次のように使用します。

{
   Content = ParseEnum<ContentEnum>(fileContentMessage);
};

解析する (異なる) Enum が多数ある場合に特に役立ちます。

于 2012-12-20T10:47:22.813 に答える
21

.NET 4.0+ には汎用のEnum.TryParseがあります

ContentEnum content;
Enum.TryParse(fileContentMessage, out content);
于 2012-12-20T11:00:02.517 に答える
18

次のようなものを使用して見てください

Enum.TryParse

1 つ以上の列挙定数の名前または数値の文字列表現を、同等の列挙オブジェクトに変換します。パラメーターは、操作で大文字と小文字を区別するかどうかを指定します。戻り値は、変換が成功したかどうかを示します。

また

Enum.Parse

1 つ以上の列挙定数の名前または数値の文字列表現を、同等の列挙オブジェクトに変換します。

于 2012-12-20T10:41:10.530 に答える