как привести строку к заданному Enum - PullRequest
4 голосов
/ 16 августа 2011

как привести строковое перечисление?

У меня есть код ниже, он выдает ошибку, когда я пытаюсь присвоить строку уровню levelEnum, где levelEnum - это перечисление ..

foreach (CustomProperty prop in requirementTemplate.AttributesCustomList)
{
    if (prop.Name == property)
    {
        return (CRF_DB.CRF_Requirement.LevelEnum) (prop.Value.ToString());
    }
}

Есть ли способ поставить элемент Enum выбора, присвоив ему значение?

надеюсь, что это достаточно ясно

Ответы [ 3 ]

6 голосов
/ 16 августа 2011

Попробуйте следующее

return (CRF_DB.CRF_Requirement.LevelEnum)Enum.Parse(
  typeof(CRF_DB.CRF_Requirement.LevelEnum), 
  prop.Value.ToString());
2 голосов
/ 16 августа 2011

Посмотрите на Enum.TryParse

http://msdn.microsoft.com/en-us/library/dd783499.aspx

0 голосов
/ 16 августа 2011

Чтобы избежать исключения, вы можете проверить, существует ли значение в этом перечислении, вызвав IsDefined. Метод TryParse будет оптимальным решением, если вы используете .NET 4.0.

foreach (CustomProperty prop in requirementTemplate.AttributesCustomList)
{
    if (prop.Name == property && Enum.IsDefined(typeof(LevelEnum), prop.Value))
    {
        return (LevelEnum)Enum.Parse(typeof(LevelEnum), prop.Value.ToString());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...