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 に答える