Надгробная плита wp7, как сохранить Enum ... и другие unkwon объект - PullRequest
1 голос
/ 17 июня 2011

Когда я сохраняю переменную, содержащую тип Enum, в wp7 (C #), я получаю исключение, это означает, что enum не известен, поэтому система не может сериализоваться.

, например

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

or

public enum video
{

       LongVideo,ShortVideo
}


 _videoType = videoType.ShortVideo 


PhoneApplicationService.Current.State["myType"]

кто-то сказал мне использовать Datacontract и элемент данных, но, кажется, недоступен в wp7

, так как сохранить тип enum?

Ответы [ 3 ]

1 голос
/ 17 июня 2011

Вам нужно будет сохранить значение Enum как целое число и сбросить его, чтобы исправить значение Enum из целого числа после активации страницы.

[Считать сохраненное целочисленное значение и установить правильное значение перечисления.Lookup Enum.Parse / Enum.TryParse]

Также вы можете взглянуть на атрибут конвертера EnumValueToDescription, реализованный Джошем Смитом в его статье здесь http://www.codeproject.com/KB/WPF/WPFJoshSmith.aspx?msg=3766336 [WPF]

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

0 голосов
/ 20 июня 2011
0 голосов
/ 19 июня 2011

DataContract и DataMember определенно доступны во всех версиях WP7.

Вам не нужно указывать int как тип предка, потому что int является типом предка по умолчанию.

public enum videoType  
{
  LongVideo = 1,
  ShortVideo, 
}

Поскольку вы можете преобразовать int в перечисление на основе int с помощью простого приведения, я предлагаю преобразовать его в int для сохранения и приведения обратно к вашему перечислению для загрузки.

...