C# 在Silverlight项目中反序列化后,某些字段为空

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

我在silverlight项目中遇到反序列化问题。我有一个Obj类,包含这个方法和变量

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的属性