2

我需要制作一个适配器类。

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);
4

3 回答 3

2

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

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

也可以看看

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

于 2013-07-15T10:20:32.867 回答
1

你需要作为演员。

Enum.Parse method returns object

将您的代码更改为以下

(ModalityResource)Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);
于 2013-07-15T10:21:20.910 回答
1

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

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

关于为什么返回对象而不是枚举值

于 2013-07-15T10:22:18.790 回答