记关于使用XamlWriter.Save时如果对象中使用ObservableCollection<T>会报无法序列化泛型类型

FlowDocument类型的对象R中使用的对象A,而对象A中的属性B的类型为ObservedCollection<T>,导致在使用XamlWriter.Save方法时报异常

调用的目标发生了异常。(TargetInvocationException)
无法序列化泛型类型“System.Collections.ObjectModel.ObservableCollection`1[A.T]”。(InvalidOperationException)

调试后发现有两种解决方式:

1、给对象A中的属性B加特性[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

可以让程序在序列化的时候不序列化属性B,但是设置了该特性的属性B在使用XamlWriter.Save的时候就不会保存到对应的值,导致下次查看流文档R的时候属性B的值不会在界面呈现(不适用我当前项目)。

2、新建一个类C,并继承ObservedCollection<T>,并将B的类型改为C,也可以解决无法序列化的问题

posted @ 2019-07-09 09:02  Z_JRV1  阅读(376)  评论(0编辑  收藏  举报