保存文件后,Datagrid不会显示解密的XML数据...我是否需要关闭该编写器?

时间:2017-11-03 16:18:21

标签: c# xml serialization datagridview deserialization

我正在进行数据解密,并且我正在使用数据网格来查看数据。编辑并保存现有记录后,会出现此问题。在保存过程之后,数据被解密,但是如果点击任何数据行,则数据突然变为加密。编写者是否对此负责?我需要关闭编写器吗?

trait TraitA extends TraitB {
   private lazy val internalObject = new ServiceA()
   internalObject.setSomeVal("someVal")
   internalObject.setSomeOtherval("someOtherVal")
   private lazy val anotherObject = new ServiceB()

   def functionA(paramA: typeB): typeC = {
       // some code using internalObject & anotherObject
   } 
}

2 个答案:

答案 0 :(得分:1)

您是否需要加密内存中使用的地址簿问题?如果不是,您可以创建一个在保存时加密的地址簿的新实例。

public void SaveFile(StreamWriter writer)
{
    AddressBook encryptedBook = New AddressBook();

    foreach (var item in ls.Contacts)
    {
        var encryptedContact = new Contact
        {
            Question1 = XMLEncryption.Model.Helpers.Encryptor.Encrypt(item.Question1),
            Question2 = XMLEncryption.Model.Helpers.Encryptor.Encrypt(item.Question2),
            Question3 = XMLEncryption.Model.Helpers.Encryptor.Encrypt(item.Question3)
        };

        encryptedBook.Contacts.Add(encryptedContact);
    }

    xs.Serialize(writer, encryptedBook);
    MessageBox.Show("File saved... ");
}

答案 1 :(得分:0)

我找到了答案。对于实现iDispose的对象,如streamreader和streamwriter ......应该使用“Using”语句,它将自动处理流。对于前...

using(StreamReader sr = new StreamReader("myfile.txt")){//do stuff here}

这确保了流式处理器的处理,我可以通过重新加载页面或调用打开的例程来重新加载文档。基本上我在使用流读取或写入类的每个地方都将它包装在using语句中,并且因为流已正确处理而解决了错误。