【问题标题】:Tombstone wp7 how save Enum... and other unkwon objectTombstone wp7 如何保存 Enum... 和其他未知对象
【发布时间】:2011-06-17 10:19:16
【问题描述】:

当我在 wp7 (C#) 中保存包含 Enum 类型的变量时,我收到一个异常,意思是 enum 是未知类型,因此系统无法序列化。

例如

public enum videoType:int {
       LongVideo=1,
      ShortVideo }

or

public enum video
{

       LongVideo,ShortVideo
}


 _videoType = videoType.ShortVideo 


PhoneApplicationService.Current.State["myType"]

有人告诉我使用 Datacontract 和数据成员,但在 wp7 中似乎不可用

那么如何保存枚举类型?

【问题讨论】:

  • 你能分享实际的代码sn-p和错误信息吗?如果您尝试将变量保存到包含枚举值的 State 中,它应该保存实际的整数值。

标签: c# windows-phone-7 windows-phone


【解决方案1】:

您必须将枚举值保存为整数,并在页面激活后从整数重置为正确的枚举值。

[读回保存的整数值并设置正确的枚举值。查找 Enum.Parse/Enum.TryParse]

您还可以查看 Josh Smith 在他的文章http://www.codeproject.com/KB/WPF/WPFJoshSmith.aspx?msg=3766336 [WPF] 中实现的 EnumValueToDescription Converter 属性

http://www.michaelsnow.com/2010/12/25/how-to-convert-an-enum-to-its-string-value/

【讨论】:

  • 抱歉,激活后重置正确值是什么意思?
【解决方案2】:

DataContract 和 DataMember 绝对在所有版本的 WP7 中都可用。

您不需要将 int 指定为祖先类型,因为 int 是默认的祖先类型。

public enum videoType  
{
  LongVideo = 1,
  ShortVideo, 
}

由于您可以通过简单的转换将 int 转换为基于 int 的枚举,因此我建议转换为 int 以保存并转换回您的枚举以加载。

【讨论】:

    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 2016-05-16
      • 2012-11-07
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 2014-07-02
      相关资源
      最近更新 更多