在 VB.Net 中序列化 ObservableCollection(of T)
我正在 VB.Net 中尝试 MVVM 一段时间,并开始使用 List(of T) 的一些实体,我将其通过 xml 序列化到磁盘。现在,我更新了列表使用的类来实现 INotifyPropertyChanged,因此我还将 List(of T) 更改为 ObservableCollection(of T)。
之后,XML 序列化器停止工作:'( 一位同事告诉我,ObservableCollections 与通用列表不同,是不可序列化的。
如果是这样,那么我怎样才能使它们可序列化?提前致谢~!:D
I'm trying out MVVM in VB.Net for a while now and started out with some of my entities using List(of T)s, which I xml serialized to disk. Now, I updated the classes used by the Lists to implement INotifyPropertyChanged so I also changed the List(of T)s to ObservableCollection(of T)s.
After which, the XML serializer stopped working :'( A colleague told me that ObservableCollections, unlike generic Lists, are not serializable.
If so then how can I make them Serializable? Thanks in Advance~! :D
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的大学只说对了一半。
ObservableCollection(Of T)
确实是可序列化的,但它是通过二进制序列化器而不是 XML 序列化器实现的。您可以采取什么措施来解决此问题,将
ObservableCollection(Of T)
的任何集合的序列化与List(Of T)
包装在一起。只需在序列化时进行转换即可。例如 ...
Your college is half correct.
ObservableCollection(Of T)
is indeed serializable but it is so through the binary serializer, not the XML one.What you can do to work around this to wrap the serialization of any collections of
ObservableCollection(Of T)
withList(Of T)
. Just do the conversion at the point of serialization.For example ...
@JaredPar 的答案仅适用于二进制序列化器,不适用于 Xml 序列化器,XmlSerializer 确实适合我(在 VS2010 中)。
@JaredPar's answer re only Binary serializer works not the Xml one, the XmlSerializer does work for me (in VS2010).