我正在尝试将对象存储在用于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();
}
}
答案 0 :(得分:4)
在要序列化的属性上的类和[DataMember]属性上放置[DataContract]属性。通常序列化应该没有这些但我怀疑你在类中有一些类型无法序列化,你没有向我们展示这些类型。还要确保你有一个没有参数的公共构造函数(或者没有构造函数)。
P.S。在.NET约定属性中是PascalCase,类的名称也是PascalCase。
答案 1 :(得分:0)
我尝试了承包商并且它不起作用 @Stilgar可以指导我们如何制作 在类和[DataMember]属性上放置要序列化的属性的[DataContract]属性
我把[DataContract]放在类名上面,[DataMember]放在属性上面 calss有2个arttributes String