我正在 WPF 中开发基于文本的游戏,并且正在探索 MVVM。目前我的项目中有 2 个模型,Adventurer 和 GameDate(此时我并不关心什么应该或不应该是模型。我稍后会解决这个问题)。我有一个 viewmodelMainViewModel
和一个 view MainView
。MainView
有绑定到保存/加载命令的按钮......这就是我卡住的地方。我非常想实现一种二进制序列化的形式;我有一个类ObjectSerializer
,它的功能和适当的部分在保存和加载命令中MainViewModel
,但我不知道如何“获取”对需要序列化的类的实例(在本例中为模型)的访问,因为我从未手动实例化它们中的任何一个。此外,我想找到一种方法将它们全部序列化到一个文件中(游戏的典型“保存”文件)。
任何在 MVVM 中处理过序列化的人都可以指导我完成这个过程吗?我整天都被困在这个问题上,却没有任何进展,这让我发疯。如果有人可以提供某种例子,我将永远欠你的债。先感谢您; 一个能让我克服困难的答案不会被忽视。我真的在这里尝试...
对象序列化器.cs
protected IFormatter iformatter;
public ObjectSerializer()
{
this.iformatter = new BinaryFormatter();
}
public T GetSerializedObject(string filename)
{
if (File.Exists(filename))
{
Stream inStream = new FileStream(
filename,
FileMode.Open,
FileAccess.Read,
FileShare.Read);
T obj = (T)this.iformatter.Deserialize(inStream);
inStream.Close();
return obj;
}
return default(T);
}
public void SaveSerializedObject(T obj, string filename)
{
Stream outStream = new FileStream(
filename,
FileMode.Create,
FileAccess.Write,
FileShare.None);
this.iformatter.Serialize(outStream, obj);
outStream.Close();
}