首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在隔离存储中存储对象

在隔离存储中存储对象
EN

Stack Overflow用户
提问于 2013-02-28 07:59:05
回答 2查看 1K关注 0票数 3

我正试图将对象存储在IsolatedStorageSettings for windows phone 7.1中

全班是-

代码语言:javascript
复制
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中,但未在用户代码中处理”

你能告诉我怎么做吗。

在这方面的任何帮助都将受到高度赞赏。

编辑::我就是这样储存的。

代码语言:javascript
复制
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();
        }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-28 08:06:44

在类上放置一个DataContract属性,在您想序列化的属性上放置一个DataMember属性。通常,序列化应该不需要这些,但我怀疑类中有一些类型不能序列化,并且没有向我们展示这些类型。还要确保您有一个没有参数的公共构造函数(或者没有构造函数)。

在.NET约定中,属性是PascalCase,类的名称也是PascalCase。

票数 4
EN

Stack Overflow用户

发布于 2013-12-19 07:30:13

我试着使用of can,它不起作用@Stilgar可以指导我们如何在类上放置DataContract属性,在您想要序列化的属性上设置DataMember属性

我把DataContract放在类名的前面,DataMember放在属性的上面,DataMember有两个艺术品字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15130331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档