Tag: 循环引用

ServiceStack.Text序列化循环引用

我需要像这样序列化一个对象图: public class A { public B Link1 {get;set;} } public class B { public A Link2 {get;set;} } 这样json只获得两个实例,但再次正确反序列化。 例如,使用元ID或类似的东西。 我知道Json.NET中有一种方法如下所述: http : //note.harajuku-tech.org/serializing-circular-references-with-jsonnet with meta ids。 ServiceStack.Text Json Serializer中是否有类似的function? 否则,是否可以在ServiceStack使用Json.NET以及如何使用? 编辑: 为了说清楚,我要求提供实例引用,而不仅仅是相同类型。 一个例子可能是: [ { “$id”: “1”, “BroId”: 0, “Name”: “John”, “Bros”: [ { “$id”: “2”, “BroId”: 0, “Name”: “Jared”, “Bros”: [ { […]

分层对象和AutoFixture

我已经实现了一个用于存储标签的类,标签集合必须是层次化的,所以我的类是: public class Tag { public int Id { get; set; } public int Description { get; set; } public Tag ParentTag { get; set; } // … (methods for get children, add and remove children, etc.) } 这样,根标签(用户希望能够拥有许多单独的树)没有父标记,而非根标记必须具有父标记。 这是实现层次结构的好方法吗? 我发现复合模式,但在我的域中,所有标签都只是标签,对于域专家,父标签和子标签之间没有区别。 在测试中使用AutoFixture出现问题; 当我需要创建一个简单的标签时,它会引发这个错误: 失败: Ploeh.AutoFixture.ObjectCreationException :AutoFixture无法创建Ploeh.AutoFixture.Kernel.SeededRequest类型的实例,因为遍历的对象图包含循环引用。 编辑:我阅读使用AutoFixture创建递归树,但它是不同的情况:我只有一个类,而不是2,我不希望自动混合创建一个树,但只有一个节点

循环引用和ScriptIgnore问题

我有几个相互引用的BusinessObject类,我需要在JsonResponse中序列化一个并将其返回到我的视图中。 我一直得到循环引用exception,我无法摆脱它。 我已将[ScriptIgnore()]装饰器放在每个不是简单数据类型属性的属性上,但我仍然得到exception。 我无法弄清楚问题出在哪里,因为我阻止了序列化器几乎所有的东西,它仍然在炸毁我。 有没有办法看到它们当前状态的序列化对象是什么? [HttpPost] public JsonResult GetAnalysisInfo(int id) { ProjectContext myDB = db; SearchAnalysis searchanalysis = SearchAnalysis.Find(myDB, id); //searchanalysis.Results = searchanalysis.SearchResultsPrototype(myDB); return this.Json(searchanalysis); } 更新 我也试过实现ISerializable无济于事。 我的GetObjectData非常简单: public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue(“SearchAnalysisId”, this.SearchAnalysisId); info.AddValue(“Created”, this.Created); } 仍然收到CircularRefernce错误。 DateTime数据类型不会导致序列化问题吗?

序列化代码示例中的无限循环

从这里查看以下代码。 它是关于在wcf中序列化时在数据提取(对象模型,对象图,域模型)中保留循环引用。 class ReferencePreservingDataContractSerializerOperationBehavior :DataContractSerializerOperationBehavior { public ReferencePreservingDataContractSerializerOperationBehavior( OperationDescription operationDescription) : base(operationDescription) { } public override XmlObjectSerializer CreateSerializer( Type type, string name, string ns, IList knownTypes) { return CreateDataContractSerializer(type, name, ns, knownTypes); } private static XmlObjectSerializer CreateDataContractSerializer( Type type, string name, string ns, IList knownTypes) { return CreateDataContractSerializer(type, name, ns, knownTypes); } public override XmlObjectSerializer […]

为什么C#中的类没有循环布局问题?

public struct Unit { Unit u; } 原因: 类型为“单元”的结构成员“Unit.u”会在结构布局中生成一个循环。 但 public class Unit { Unit u; } 编译。 我理解我认为的问题。 引用Unit对象时将形成无限循环,因为它必须初始化另一个成员Unit ,依此类推。 但是为什么编译器只为structs限制问题呢? 这个问题也不存在于class吗? 我错过了什么吗?

是否可以使用循环引用执行序列化?

因此,我的实体类(用C#编写)遵循父子模型,其中每个子对象必须具有Parent属性,在该属性中它保持对其Parent的引用。 由于循环引用,此Parent属性导致Object序列化的问题。 我无法删除对父级的引用,也无法将其标记为XmlIgnore(因为我在反序列化XML时需要将其读回) 有什么想法吗?

如何防止自引用表变为循环

这是一个非常常见的问题,但我还没有找到我正在寻找的确切问题和答案。 我有一个FK指向其自己的PK的表,以启用任意深层次结构,如经典tblEmployee,其列Manager是具有PK tblEmployee.EmployeeID的FK。 让我们在我的应用程序中说,用户 创建新员工Alice和Dave,没有经理,因为他们是CEO和总裁。 因此对于这两个记录, tblEmployee.Manager为NULL。 以Alice为经理创建新员工Bob。 然后用鲍勃作为他的经理创建查尔斯。 它们的Manager字段包含tblEmployee中另一条记录的主键值。 编辑Alice的员工记录,意思是分配Dave有她的经理(这很好),但不小心将Alice的经理设为Charles,他是树中Alice的两级。 现在该表是循环引用而不是正确的树。 确保在应用程序中无法完成步骤3的最佳方法是什么 ? 我只需要确保它将拒绝执行最后一次SQL更新,而是显示一些错误消息。 我不是在挑剔它是SQL Server中的数据库约束(必须在2008年或2012年工作),还是在我的C#app的业务逻辑层中使用某种validation例程。