【发布时间】:2015-05-06 14:55:57
【问题描述】:
我是新手。能否请您解释一下为什么“循环引用”是一件坏事,它可能带来的坏结果是什么?
【问题讨论】:
-
也许谷歌搜索会更合适?
标签: json.net xmlserializer datacontractserializer serialization
我是新手。能否请您解释一下为什么“循环引用”是一件坏事,它可能带来的坏结果是什么?
【问题讨论】:
标签: json.net xmlserializer datacontractserializer serialization
如果您将其序列化为 JSON,那么您将获得一个无限的 JSON 文档,因为此时序列化器将 CTest 对象序列化为 JSON 并且他到达Other 属性,此属性由其自身和序列化器引用从序列化这个对象开始。等等。
public class CTest
{
public CTest Other { get; set; }
public string Description { get; set; }
}
[Test]
public void Circulartest()
{
CTest instance = new CTest();
instance.Description = "Hello";
instance.Other = instance;
JsonConvert.SerializeObject(instance);
}
这将导致以下 JSON 文件
{
"Description": "Hello"
"Other":
{
"Description": "Hello"
"Other":
{
"Description": "Hello"
"Other":
{
"Description": "Hello"
"Other":
{
....never ending story
}
}
}
}
}
【讨论】: