Я пытаюсь изменить некоторые CustomDocumentProperties для документа .docx. Мне удалось прочитать текущее значение и изменить его, но при сохранении документа изменения в настраиваемых полях теряются.
У меня есть следующий метод в классе DocAccessor (который служит интерфейсом для моих файлов документов):
void SetInfo(string key, string val) {
object custom_properties = current_doc.CustomDocumentProperties;
Type custom_properties_type = custom_properties.GetType();
custom_properties_type.InvokeMember("Item", BindingFlags.Default | BindingFlags.SetProperty, null, custom_properties, new object[] { key, val });
}
в другом месте я звоню:
doc_accessor.GetInfo("Number") //returns 5
doc_accessor.SetInfo("Number", "6");
doc_accessor.GetInfo("Number") //returns 6
doc_accessor.SaveAndClose();
doc_accessor.Open(); //it retains the path, so I don't need to respecify
doc_accessor.GetInfo("Number") //returns 5
Моя функция doc_accessor.SaveAndClose () работает правильно, так как я изменил путь, чтобы сохранить в другом месте, и сделал это ... но без записи измененных свойств CustomDocumentProperties. Это создает впечатление, что я пропускаю какой-то шаг коммита, но разве не должен обрабатывать current_doc.Save ()?