读取序列化对象时出错? WP7

时间:2010-12-06 00:09:11

标签: serialization exception-handling windows-phone-7 isolatedstorage

我正在使用以下代码从Isolated Storage读取对象:

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 :(得分:0)

你的目标是什么?

  1. 你想在应用中播放一首歌吗?
  2. 您是否在应用中创建了自己的歌曲?
  3. 您想要访问歌曲库吗?
  4. 你想从网上获取这首歌吗?
  5. @ 1只需在项目中为您的conent添加一首歌曲即可。无需使用序列化。
    @ 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