【问题标题】:How to use Enum.Parse in windows phone 7 in a proper way?如何以正确的方式在 Windows Phone 7 中使用 Enum.Parse?
【发布时间】:2014-12-05 21:34:24
【问题描述】:

我想将一些数据解析为枚举,但我遇到了一个问题。也就是说,当我尝试这段代码时:

Languages lang = Enum.Parse(typeof(Languages), languageChooser.SelectedItem, true);

我得到信息,它有一些无效的参数。我认为第一个有问题,但在每个教程中我发现第一个 arg 看起来像这样。
有什么帮助或建议吗?

【问题讨论】:

  • 具体收到什么错误消息? Languages 的声明是什么? languageChooser 是什么?见stackoverflow.com/help/how-to-askstackoverflow.com/help/mcve
  • 我认为 WP7 不支持重载。不幸的是,他们已经从文档中删除了 WP7 支持信息,因此很难通过检查来判断。
  • 我没有收到任何特殊的错误信息,我的代码只是用红线下划线。

标签: c# windows-phone-7 enums


【解决方案1】:

问题是您的第二个参数,而不是第一个。 languageChooser.SelectedItem 很可能返回 object 的实例,而不是 string。我不确定你用什么类型来支持你的languageChooser,所以很难说正确的修复方法是什么。它可以是以下任何一种:

// languageChooser is bound to an IEnumerable<string>
var lang = 
    Enum.Parse(typeof(Languages), languageChooser.SelectedItem as string, true);

// languageChooser is bound to something with a proper ToString() implementation
var lang = 
    Enum.Parse(typeof(Languages), languageChooser.SelectedItem.ToString(), true);

// languageChooser is an IEnumerable<SomeOtherType> where SomeOtherType has a property
// that indicates the language
var obj = languageChooser.SelectedItem as SomeOtherType;
var lang = Enum.Parse(typeof(Languages), obj.SomeLanguageProperty, true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多