WPF SerializationException:主窗口未标记为Serializable?

时间:2017-07-18 14:26:13

标签: c# wpf serialization observablecollection binaryformatter

在我的MainWindow中,我有ObservableCollection<Video>名为的视频,其中包含视频对象。课程视频标记为[Serializable](我也将其视为[Serializable()])。我希望SerializeDeserialize以及BinaryFormatter以下列方式使用BinaryFormatter formatter = new BinaryFormatter(); using (Stream stream = new FileStream("Saves.bin", FileMode.Create, FileAccess.Write, FileShare.None)) { formatter.Serialize(stream, videos); }

序列化:

 BinaryFormatter formatter = new BinaryFormatter();
        using (Stream stream = new FileStream("Saves.bin",
              FileMode.Open,
              FileAccess.Read,
              FileShare.Read))
 {
        videos = (ObservableCollection<Video>)formatter.Deserialize(stream);
 }

反序列化:

Serialization

List Serialization ObservableCollection Window的{​​{1}}文章与我的方法类似,而对DotNetPerls SO文章的评论则表明MainWindow之前的问题1 {} Serializable s不会在.Net的更高版本中持续存在(我使用VS 2017使用最新的.Net)。我没有在项目中存储DataBinding个对象。

当我使用Window将基础数据加载到字段中时填充数据时,错误会抱怨Serializable未标记为MainWindow,错误指的是Events未标记为[field: NonSerialized()],而不是 MainWindow。 我遇到了XMLSerialization的问题,但我用BinaryFormatter属性标记了它们,所以这不是问题(至少我不这么认为)。 那么我做错了什么?为什么格式化程序首先想要序列化{{1}}?我应该使用{{1}}代替{{1}}吗?

编辑:我尝试了与Perls文章中显示的完全相同的语法,但它给出了相同的结果。

0 个答案:

没有答案