C# 在Silverlight项目中反序列化后,某些字段为空
我在silverlight项目中遇到反序列化问题。我有一个Obj类,包含这个方法和变量C# 在Silverlight项目中反序列化后,某些字段为空,c#,silverlight,serialization,deserialization,C#,Silverlight,Serialization,Deserialization,我在silverlight项目中遇到反序列化问题。我有一个Obj类,包含这个方法和变量 public class Obj { private string _name; private Uri _iconUri; private string _stringUri; private List<ObjItem> _items = new List<ObjItem>(); public List<ObjItem> Item
public class Obj
{
private string _name;
private Uri _iconUri;
private string _stringUri;
private List<ObjItem> _items = new List<ObjItem>();
public List<ObjItem> Items
{
get { return _items; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public Uri IconUri
{
get
{
return _iconUri;
}
}
public string StringUri { get { return _stringUri; } }
public int Count
{
get { return _items.Count; }
}
public Obj(string name,string uriString = null)
{
_name = name;
if (uriString == null)
{
_iconUri = null;
}
else
{
_iconUri = new Uri(uriString, UriKind.Relative);
}
_stringUri = uriString;
}
// for deserialization
public Obj()
{
}
公共类Obj
{
私有字符串\u名称;
私有Uri_iconUri;
私有字符串_stringUri;
私有列表_items=新列表();
公共清单项目
{
获取{return\u items;}
}
公共字符串名
{
获取{return\u name;}
设置{u name=value;}
}
公共图书馆
{
得到
{
返回i_iconUri;
}
}
公共字符串StringUri{get{return\u StringUri;}}
公共整数计数
{
获取{return\u items.Count;}
}
公共对象(字符串名称,字符串uriString=null)
{
_名称=名称;
如果(uriString==null)
{
_iconUri=null;
}
其他的
{
_iconUri=新Uri(uriString,UriKind.Relative);
}
_stringUri=uriString;
}
//用于反序列化
公共Obj()
{
}
}
序列化之前,所有字段都不是空的!
反序列化后,除_iconUri和_stringUri字段外,所有字段都不是临时字段。
为什么会这样?
我会等待你的答复。
谢谢大家! 那两个人没有二传手。Silverlight有一个受限制的安全模型,您不能通过访问私有字段进行欺骗;只能访问公共成员。所以:如果您想让公共setter与SL上的大多数序列化程序一起工作,请向这些属性添加公共setter
具体来说:_name是由name setter设置的,而_items是通过字段初始值设定项在构造函数中设置的。因为Uri类是不可序列化的,我想,您使用的是哪种序列化?将类型更改为string,并保留另一个转换和返回Uri的属性