.net 儿童引用其父级的复杂类型的反序列化问题
我有一个儿童班。所有child都必须有对我的根对象的引用。在我反序列化我的对象之前,一切都很顺利。当发生反序列化时,反序列化会在我的子对象上执行新的操作,因此即使在调用SetParent之前,该子对象已被新对象替换,并且未调用SetParent。所以在反序列化之后,我的子对象没有一个知道他的父对象。很多应用程序都使用对象根,我不希望所有这些应用程序都调用SetParent 我已在反序列化后查找事件,但未找到任何事件。我已经查看了反射,但还没有找到找到父对象的方法。我已经看到我可以实现ISerializable,但是发现管理所有的反序列化过程有点繁重,我在这个对象中有大约170个属性 我可以实现ISerializable并调用一个完成所有工作的基本方法吗?然后,只需调用我的SetParent函数?或者有没有一种方法可以通过反射找到我在研究中没有发现的对象实例的父对象?或者有人会有其他建议吗.net 儿童引用其父级的复杂类型的反序列化问题,.net,vb.net,serialization,xml-deserialization,.net,Vb.net,Serialization,Xml Deserialization,我有一个儿童班。所有child都必须有对我的根对象的引用。在我反序列化我的对象之前,一切都很顺利。当发生反序列化时,反序列化会在我的子对象上执行新的操作,因此即使在调用SetParent之前,该子对象已被新对象替换,并且未调用SetParent。所以在反序列化之后,我的子对象没有一个知道他的父对象。很多应用程序都使用对象根,我不希望所有这些应用程序都调用SetParent 我已在反序列化后查找事件,但未找到任何事件。我已经查看了反射,但还没有找到找到父对象的方法。我已经看到我可以实现ISeria
Public Class Root
Private _a As Child1
Private _b As Child2
Public Property a() As Child1
Get
Return _a
End Get
Set(ByVal value As Child1)
_a = value
End Set
End Property
Public Property b() As Child2
Get
Return _b
End Get
Set(ByVal value As Child2)
_b = value
End Set
End Property
Public Sub New()
a = New Child1
b = New Child2
SetParent()
End Sub
Friend Sub SetParent()
a.SetParent(Me)
b.SetParent(Me)
End Sub
End Class
Public Class Child1
Private _parent As Root
Friend Sub SetParent(ByRef parent As Root)
_parent = parent
End Sub
End Class
Public Class Child2
Private _parent As Root
Private _a As New Child3
Public Property a() As Child3
Get
Return _a
End Get
Set(ByVal value As Child3)
_a = value
End Set
End Property
Friend Sub SetParent(ByRef parent As Root)
a = New Child3
_parent = parent
a.SetParent(parent)
End Sub
End Class
Public Class Child3
Private _parent As Root
Friend Sub SetParent(ByRef parent As Root)
_parent = parent
End Sub
End Class
谢谢你的帮助!:o除非实现IXmlSerializable并自己完成所有工作,否则无法使用XML序列化来完成此操作
根据您使用的.NET版本,您可以尝试使用,因为它可以处理对同一对象的多个引用。是否可以在父属性setter中设置父属性 如果父级也是序列化的,则反序列化将调用setter 例:
这正是我需要的!!谢谢
Public Class Root
...
Public Property a() As Child1
Get
Return _a
End Get
Set(ByVal value As Child1)
_a = value
_a.SetParent(Me)
End Set
End Property
...
End Class