Ответ 1
Используйте Enum.Parse()
.
var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);
Я читаю содержимое файла и беру строку в точном месте, подобном этому
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);
};
Особенно полезно, если у вас много (разных) Enums для разбора.
.NET 4.0+ имеет общий Enum.TryParse
ContentEnum content;
Enum.TryParse(fileContentMessage, out content);