在我的MainWindow
中,我有ObservableCollection<Video>
名为的视频,其中包含视频对象。课程视频标记为[Serializable]
(我也将其视为[Serializable()]
)。我希望Serialize
和Deserialize
以及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文章中显示的完全相同的语法,但它给出了相同的结果。