有效地使用XmlDocument.Save()

时间:2012-06-26 22:22:16

标签: c# .net xml save

我正在使用C#中的.XML文档,我正在选择节点,在我的代码范围内多次添加节点和删除节点。

此文档的所有XML编辑都包含在一个类中,其他类调用它。

由于数据访问类无法通过编辑文档来判断使用它的类是否完成,因此它没有关于是否/何时保存的逻辑。

可以在每次修改文档后保存,但我关注性能问题。

或者我可以假设/希望它将被其他使用它的类保存(我创建了一个单行的公共方法来保存文档,所以另一个类可以请求保存)。

第二个选项关注我,因为我觉得我应该以某种方式全局强制执行它以避免被调用和修改未被提交。到目前为止,永远不会出现需要回滚的情况;任何变更都是应该承诺的变更。

在这种情况下,.Net(或编码设计)是否有办法平衡性能和安全性?

2 个答案:

答案 0 :(得分:3)

基本上你的问题是我所有人:你需要保存,但你不知道什么时候,因为关于保存点的知识是你的班级。

我的建议是打包你的电话 - 假设你有类似public void MyClass.SomeEditing(int foo)的内容,请使用public void MyClass.SomeEditing(int foo, bool ShouldSave)创建一个包含true的包装器。

这样,你的班级的消费者可以决定,他是否想要立即保存,如果他知道,选择false,紧接其他编辑将导致保存。调用“旧”API的现有代码受默认“save imediately”

的保护

答案 1 :(得分:3)

如果您总是想保存更改(只是不知道何时),那么您可以将save命令添加到类destructor。这样您就知道将始终保存更改。

如果您需要其他帮助或想要一个示例,请发表评论,否则请选择正确答案。

更新:我注意到类析构函数可能在其他对象(如FileStream)已被处理后触发。
我建议您在析构函数中测试此条件,并且还要实现并使用IDisposable接口。然后,您可以订阅Application.Exit事件或Application.ApplicationExit事件,并在那里致电处置 请确保将代码保留在析构函数中(但请确保将其放在try块中)以防程序崩溃或出现其他意外退出。