C# 有效地使用XmlDocument.Save()

C# 有效地使用XmlDocument.Save(),c#,.net,xml,save,C#,.net,Xml,Save,我正在使用Cා中的.XML文档,从中选择节点,向节点添加节点,并在代码的一段时间内多次删除节点 此文档的所有XML编辑都包含在一个类中,其他类调用该类 由于数据访问类无法判断使用它的类是否完成了对文档的编辑,因此它没有关于是否/何时保存的逻辑 我可以在每次修改文档后保存,但我关心的是性能问题 或者,我可以假设/希望它将由使用它的其他类保存(我创建了一个单行公共方法来保存文档,这样另一个类就可以请求保存) 第二种选择与我有关,因为我觉得我应该以某种方式在全球范围内实施它,以避免它被调用和修改未被提

我正在使用Cා中的.XML文档,从中选择节点,向节点添加节点,并在代码的一段时间内多次删除节点

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

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

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

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

第二种选择与我有关,因为我觉得我应该以某种方式在全球范围内实施它,以避免它被调用和修改未被提交。到目前为止,永远不会有需要回滚的情况;任何改变都是一种应该被承诺的改变


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

基本上你的问题是:你需要保存,但你不知道什么时候保存,因为关于保存点的知识不在你的课堂上

我的建议是包装您的调用-假设您有类似于
public void MyClass.SomeEditing(int foo)
,创建类似于
public void MyClass.SomeEditing(int foo,bool ShouldSave)
的包装器,并将ShouldSave defaultingto
true


通过这种方式,您的类的使用者可以决定是否要立即保存,如果他知道,选择
false
,紧接着的其他编辑将导致保存。调用“旧”API的现有代码受到默认“save imediately”的保护。

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

如果您需要其他帮助或需要示例,请留下评论,否则请选择正确答案

更新:我注意到类析构函数可能会在其他对象(如文件流)被释放后触发。
我建议您在析构函数中测试这种情况,并实现和使用接口。然后,您可以订阅事件或事件,并在那里调用dispose。

确保将代码保存在析构函数中(但确保将其保存在try块中),以防程序崩溃或出现其他意外退出。

这正是我想要的。我在谷歌上搜索过这个词,但由于不知道正确的关键词,我什么也没找到,并认为它根本不存在。这将允许我在感觉需要时保存它(调用该方法),并保证在某个时间点保存它。谢谢,并标记为正确。