3

我正在尝试将对象存储在 Windows Phone 7.1 的独立存储设置中

班级是 -

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.ni.dll 中发生了‘System.Runtime.Serialization.InvalidDataContractException’类型的异常,但未在用户代码中处理”

你能告诉它是如何工作的吗?

在这方面的任何帮助将不胜感激。

编辑 :: 这就是我的存储方式。

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 回答
0

我尝试了有承包商,但它不起作用@Stilgar你能指导我们如何在你想要序列化的属性上放置一个 [DataContract] 属性和 [DataMember] 属性

我将 [DataContract] 放在类名上方,将 [DataMember] 放在 calss 具有 2 个 arttributes 字符串的属性上方

于 2013-12-19T07:30:13.093 回答