3

Windows Phone 7.1 の IsolatedStorageSettings にオブジェクトを保存しようとしています。

クラスは -

public class container
    {
        public int index { get; set; }
        public int left { get; set; }
        public int top { get; set; }
        public int[] ar { get; set; }
        public int count { get; set; }
        public bool mark { get; set; }
        public int num_e { get; set; }
        public int o { get; set; }
        public bool mine { get; set; }
// some functions
    }

オブジェクトを分離ストレージに追加した後、.save()ステートメントを実行すると、次のエラーが生成されます。

「タイプ 'System.Runtime.Serialization.InvalidDataContractException' の例外が System.Runtime.Serialization.ni.dll で発生しましたが、ユーザー コードで処理されませんでした」

それを機能させる方法を教えてください。

この点で何か助けていただければ幸いです。

編集::これが私が保存している方法です。

private void save_Click(object sender, RoutedEventArgs e)
    {

        if (save_g.Contains("n"))
        {
            save_g["n"] = cons.n;       //cons is a class and n is a static int
        }
        else
            save_g.Add("n", cons.n);

        if (save_g.Contains("n_boxes"))
        {
            save_g["n_boxes"] = cons.n_boxes;   //n_boxes is a static int
        }
        else
            save_g.Add("n_boxes", cons.n_boxes);

        save_g.Save();

        string t = "";
        container c;                   //class definition as above 

        for (int i = 0; i < cons.n; i++)
        {
            t = Convert.ToString(i);
            c=new container(edge[i]);        //edge is an object of other class

            if (save_g.Contains(t))
            {
                save_g[t] = c;
            }
            else
                save_g.Add(t, c);
            save_g.Save();                  ****Here error occurs****
        }

        for (int i = 0; i < cons.n_boxes; i++)
        {
            t = Convert.ToString(i + cons.n);
            c = new container(brick[i]);    //brick is an object of other class

            if (save_g.Contains(t))
            {
                save_g[t] = c;
            }
            else
                save_g.Add(t, c);
            save_g.Save();
        }
    }
4

2 に答える 2

4

クラスに [DataContract] 属性を配置し、シリアル化するプロパティに [DataMember] 属性を配置します。通常、シリアル化はこれらがなくても機能するはずですが、シリアル化できないクラスにいくつかの型があり、これらが表示されていないと思われます。また、引数のないパブリック コンストラクターがあること (またはコンストラクターがないこと) を確認してください。

.NET 規約プロパティの PS は PascalCase であり、クラスの名前も PascalCase です。

于 2013-02-28T08:06:44.930 に答える