序列化PhoneApplicationPage Windows Phone

时间:2012-11-26 23:16:54

标签: windows-phone-7 xml-serialization

我有一个名为“Conexion”的类,我保留了我的应用程序的所有信息,我希望它在用户按下Windows键时将类的对象保存到文件,但应用程序崩溃,因为它说“委托”有一个反映他的类型的问题。这个对象的类型是“PhoneApplicationPage”,它似乎无法序列化。该对象跟踪请求的页面。

所以我请求你的帮助,看看是否有一个解决方案,这不会让我重做应用程序,因为我没有时间。

下面是我用来保存和加载数据的方法的代码。

public void save() {

            IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
            IsolatedStorageFileStream stream = storage.CreateFile(fileName);
            DateTime currTime = DateTime.Now;
            this.timeOff = currTime.ToString();
            XmlSerializer xml = new XmlSerializer(this.GetType());
            xml.Serialize(stream, this);
            stream.Close();
            stream.Dispose();
    }

 public Conexion load() {

        IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
        Conexion conn;

        if (storage.FileExists(fileName))
        {
            IsolatedStorageFileStream stream = storage.OpenFile(fileName, System.IO.FileMode.Open);
            XmlSerializer xml = new XmlSerializer(typeof(Conexion));
            conn = xml.Deserialize(stream) as Conexion;
            stream.Close();
            DateTime currTime = DateTime.Now;
            DateTime checkTime = DateTime.Parse(timeOff).AddMinutes(lapso);
            if (DateTime.Compare(checkTime, currTime) >= 0)
            {
                Console.WriteLine("sesion valida");
            }
            else {
                conn.reseteaSingletonConexion();
            }
            stream.Dispose();
        }
        else
        {
            conn= new Conexion();
        }
        return conn;
    }

提前致谢

编辑:

忽略对象“delegado”阻止了应用程序崩溃,但现在,当我加载信息时,对象无法反序列化,似乎它在同一错误中标记了2个细节:

There is an error in XML document (2, 2).
Conexion cannot be serialized because it does not have a parameterless constructor.

但该类确实有一个无参数构造函数。

任何想法?

1 个答案:

答案 0 :(得分:0)

您可以对不会序列化的对象使用[XmlIgnore]属性(您可能不希望序列化整个XAML页面。

将此属性放在Conexion课程的属性上方。例如,

public class Conexion
{
    public string MyPropertyToSerialize { get;set; }

    [XmlIgnore]
    public string MyPropertyToIgnore { get;set; }
}

希望有所帮助。