Ошибка чтения сериализованного объекта? WP7 - PullRequest
0 голосов
/ 06 декабря 2010

Я читаю объект из изолированного хранилища со следующим кодом:

public static T Load<T>(string name) where T : class, new()
    {
        T loadedObject = null;
        using (IsolatedStorageFile storageFile = IsolatedStorageFile.GetUserStoreForApplication())
        using (IsolatedStorageFileStream storageFileStream = new IsolatedStorageFileStream(name, System.IO.FileMode.OpenOrCreate, storageFile))
        {
            if (storageFileStream.Length > 0)
            {
                    DataContractSerializer serializer = new DataContractSerializer(typeof(T));
                    loadedObject = serializer.ReadObject(storageFileStream) as T; //####Error Here####
            }
            if (loadedObject == null)
            {
                loadedObject = new T();
            }
        }

При чтении моего объекта я получаю исключение SecurityException, которое читает

«Тип» Microsoft.Xna.Framework.Media.Song 'нельзя десериализовать при частичном доверии, поскольку у него нет общедоступного конструктора без параметров. "

Мой читаемый класс объекта содержит свойство Song, которое вызывает вышеуказанную ошибку.

Есть ли способ обойти это?Я хотел бы, чтобы мое свойство Song сохранялось вместе с моим объектом.Любой совет будет принята с благодарностью!Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2010

Какова ваша цель?

  1. Хотите просто воспроизвести песню в приложении?
  2. Вы создаете свою песню в приложении?
  3. Хотите ли вы иметь доступ к библиотеке песен?
  4. Хотите получить песню из Интернета?

@ 1 Просто добавьте песню в ваш проект. нет необходимости использовать сериализацию.
@ 2 Используйте поток памяти, чтобы сохранить его. сохраните его и затем загрузите поток. Использовать MediaElement.SetSource (Stream stream)
@ 3 Используйте MediaPlayerLauncher
@ 4 Song song = Song.FromUri ..

Вам нужно хранить его по-другому. Исключение объясняет почти все, почему песня является плохим выбором в этом случае.

Посмотрите на этот пример. http://social.msdn.microsoft.com/Forums/en/windowsphone7series/thread/3080021c-3960-49a0-ac5b-ebf2680592e1

...