gpt4 book ai didi

c# - 在隔离存储中存储对象

转载 作者:行者123 更新时间:2023-11-30 15:35:18 25 4
gpt4 key购买 nike

我正在尝试将对象存储在 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()语句时,产生如下错误

"An exception of type 'System.Runtime.Serialization.InvalidDataContractException' occurred in System.Runtime.Serialization.ni.dll but was not handled in user code"

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

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

edit::这就是我存储的方式。

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();
}
}

最佳答案

在类上放置 [DataContract] 属性,在要序列化的属性上放置 [DataMember] 属性。通常序列化应该在没有这些的情况下工作,但我怀疑你在类中有一些类型无法序列化并且你没有向我们展示这些。还要确保您有一个没有参数的公共(public)构造函数(或没有构造函数)。

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

关于c# - 在隔离存储中存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com