首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将字符串转换为枚举

无法将字符串转换为枚举
EN

Stack Overflow用户
提问于 2013-07-15 18:17:54
回答 3查看 3.5K关注 0票数 2

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

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

transportOrderTrip.ModalityResource是一个字符串。

代码语言:javascript
运行
复制
if(Enum.IsDefined(typeof(ModalityResource), transportOrderTrip.ModalityResource))
    trip.Resource = Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);

此处为ModalityResource的可能值:

代码语言:javascript
运行
复制
 public enum ModalityResource { NONE, CHASSIS, TRAILER }

我得到的错误是:无法隐式地将类型'object‘转换为'ModalityResource’。有人可能知道哪里出了问题吗?

编辑:不要紧,有点困惑。

代码语言:javascript
运行
复制
  trip.Resource = (ModalityResource) Enum.Parse(typeof (Shared.Interfaces.ModalityResource), transportOrderTrip.ModalityResource, true);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-15 18:20:33

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

代码语言:javascript
运行
复制
trip.Resource = (ModalityResource)Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);

另请参阅

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

票数 2
EN

Stack Overflow用户

发布于 2013-07-15 18:21:21

你需要扮演演员。

代码语言:javascript
运行
复制
Enum.Parse method returns object

将您的代码更改为以下代码

代码语言:javascript
运行
复制
(ModalityResource)Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);
票数 1
EN

Stack Overflow用户

发布于 2013-07-15 18:22:19

由于返回类型为object,因此需要将其强制转换为所需的Enum类型

代码语言:javascript
运行
复制
(ModalityResource) Enum.Parse(typeof(ModalityResource), 
                             transportOrderTrip.ModalityResource, true);

Why object is returned instead of an enum value

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17651867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档