我正在尝试使用C#开发一个库应用程序,但是我陷入了ObservableCollection类的序列化中。
功能测试为:
[].concat(...responses.map(res => res.data));
我认为它是自动记录的,易于理解。 我面临两个问题: -测试后,创建了一个保存文件,但是测试失败消息告诉我saveFileExists()方法返回false。 -保存文件是在正确的目录中创建的,但是它是一个空文件,我不知道为什么。
这是我专用于文件管理的工具类:
[TestMethod]
public void saveFile_createTheFile()
{
var btn_saveFile = createA<WpfButton>("btn_saveToFile");
if (fileManager.saveFileExists())
return;
btn_saveFile.Click();
fileManager.saveFileExists().ShouldBeTrue();
}
有人可以告诉我为什么会出现这两个错误吗?
谢谢
ps:启动时,该集合包含2本书。Book类可序列化。
编辑
我找到了原因:通过调试,我得到了这个错误:在“ formatter.Serialize(...)”方法处,出现错误“ PropertyChangeEventManager无法序列化”。确实,这是Book类:
public class FileManager
{
private string SAVEFILE = "datas.saved";
public string appDir = null;
public string pathToSaveFile = null;
public FileManager()
{
appDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
pathToSaveFile = Path.Combine(appDir, SAVEFILE);
}
public Boolean saveFileExists()
{
return File.Exists(Directory.GetCurrentDirectory() + "\\" + SAVEFILE);
}
public void saveToFile(ObservableCollection<Book> books)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(SAVEFILE, FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, books.ToArray());
stream.Close();
}
}
这是一个子类,基类肯定添加了一些不可序列化的字段。如何避免这种情况?我是wpf的新手,但我认为Book中的通知是强制性的,以便告知窗口的绑定组件已完成更改。