我使用JSON内容并尝试在使用Json.net反序列化为自定义对象后添加新属性。创建新属性后,它不会更新其引用类型。我不确定我在这里失踪了什么。有人可以帮忙吗?
这是继承Dictionary类型的基类。
<!-- language: c# -->
public abstract class BaseData : Dictionary<string, object>
{
public string ID
{ get { return this["Id"] as string; } }
public string Title
{ get { return this["Title"] as string; } }
}
这是我的页面类
public class CPage : BaseData
{
public CPage(){ }
public CPageTemplate PageTemplate
{
get { return (this["PageTemplate"] as JObject).ToObject<CPageTemplate>(); }
}
}
这是我的模板类
public class CPageTemplate : BaseData
{
public CPageTemplate(){}
public CPageTemplate(PageTemplate pt)
{
this.Add("Id", pt.Id.ToString());
this.Add("Title", pt.Title);
}
}
JSON内容
{
"Id": "P_1",
"Title": "enrolled",
"PageTemplate": {
"Id": "PT_1",
"Title": "PageTemplate Transform"
}
}
用法如下
JObject jo = JObject.Parse(File.ReadAllText(@"stack.json"));
CPage cPage = JsonConvert.DeserializeObject<CPage>(jo.ToString());
cPage["Id"] = "C_1"; // works correctly
cPage.PageTemplate["Dynamic"] = true; // not able to retrieve
设置&#34;动态&#34;属性,如果我读cPage对象,我无法找到&#34;动态&#34;键。在更改现有&#34; Id&#34;的值时,也会发生同样的事情。或&#34;标题&#34;属性。即使在我更新之后,我也只能看到旧值。
此外,如果我更新Page对象的Id,我可以检索它的cPage对象。 PageTemplate 中的任何更改都没有得到反映。
有人可以帮我吗?