无法将字符串转换为枚举

时间:2013-07-15 10:17:54

标签: c# enums

我需要创建一个适配器类。

trip.Resource是一个名为ModalityResource的枚举。

transportOrderTrip.ModalityResource是一个字符串。

if(Enum.IsDefined(typeof(ModalityResource), transportOrderTrip.ModalityResource))
    trip.Resource = Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);

此处ModalityResource的可能值:

 public enum ModalityResource { NONE, CHASSIS, TRAILER }

我得到的错误就是这个:不能隐式地将类型'object'转换为'ModalityResource'。任何人都可能知道出了什么问题?

编辑:没关系,有点困惑。

  trip.Resource = (ModalityResource) Enum.Parse(typeof (Shared.Interfaces.ModalityResource), transportOrderTrip.ModalityResource, true);

3 个答案:

答案 0 :(得分:2)

您必须将Enum.Parse的结果转换为ModalityResource。 在.NET 4或更高版本中,您还可以使用函数的泛型重载。

trip.Resource = (ModalityResource)Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);

另见

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

答案 1 :(得分:1)

你需要作为演员。

Enum.Parse method returns object

将您的代码更改为以下

(ModalityResource)Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);

答案 2 :(得分:1)

您需要将其转换为所需的Enum类型,因为返回类型为object

(ModalityResource) Enum.Parse(typeof(ModalityResource), 
                             transportOrderTrip.ModalityResource, true);

Why object is returned instead of an enum value