1

我有一个名为“Conexion”的类,我将我的应用程序的所有信息保存在那里,当用户按下 Windows 键时,我希望它将类的对象保存到文件中,但是应用程序崩溃,因为它说 obect “delegado”在反映他的类型时存在问题。这个对象的类型是 "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.

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

任何的想法?

4

1 回答 1

0

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

将此属性放在Conexion类中的属性之上。例如,

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

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

希望有帮助。

于 2012-11-26T23:26:05.947 回答