c# – 在序列化之前如何检查类文件是否已更改?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 在序列化之前如何检查类文件是否已更改?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1658字,纯文字阅读大概需要3分钟。
内容图文
![c# – 在序列化之前如何检查类文件是否已更改?](/upload/InfoBanner/zyjiaocheng/780/17b750ccb94a4126889921cdba7d6c93.jpg)
我们为大量C#类型提供了自定义序列化过程.但是,重新生成所有类/类型的所有序列化信息非常耗时,我们计划通过计算文件的散列来优化序列化过程,如果不同,我们生成序列化输出,否则我们跳过它.编辑:我们可以将哈希存储在一个字典中,该字典可以输出到文件并在处理时重新读取.这是当前的想法.
我们当前的序列化处理器的工作原理如下 – 我们将要序列化的类型添加到repo中:
SerializerRepo.Add(typeof(MyType)); //Add type to be serialized to a repo
然后(可能在代码中的其他地方)让序列化程序处理repo并输出自定义XML等,
Serializer.WriteXML(SerializerRepo.GetTypes());
WriteXML遍历每种类型,并为特定位置的每种类型喷出XML文件.我需要优化WriteXML方法,如果它已经改变,只能序列化类/类型,否则就让它成为.
这可能不是最好的方法,并且可以提供重构建议.但是,当前的问题是如何确定容纳类/类型的类定义(或文件)是否已更改以确定是否应生成XML?
由于类可以是部分类,因此类型和相应类之间没有固有的关系,因此.Net没有从类型到类文件的任何这种映射,反之亦然.但是,我们没有任何部分课程.但在我们的例子中,我们似乎需要两个(尽管是无关的)信息 – 包含类型/类和文件类型的文件.
到目前为止两个(可能是次优的)想法:
>要么我们让用户指定文件名和类型.但是,对于文件名更改的任何重构都不合适.
>另一种解决方案是手动读取每个.cs文件并解析公共类< classname>并将其映射到每种类型.这似乎是一个巨大的开销,并不确定它是否是一个可靠的方法.
这是我唯一的两个想法,但没有具体的.建议?
解决方法:
将内存中的XML生成与将其持久保存到磁盘分开.
保留从完全限定类名到哈希的字典.在第一次运行时,字典将从空开始.
当需要确保类的相应XML在磁盘上是最新的时,在内存中生成XML,哈希,并检查字典中的哈希值.如果类的名称不在字典中,或者其散列与字典中的散列不一致,则保留生成的XML并使用新散列更新字典.
在您使用所有类型完成此过程后,您将拥有一个完整的哈希字典.将其保留到磁盘并在下次运行此程序时加载它.
内容总结
以上是互联网集市为您收集整理的c# – 在序列化之前如何检查类文件是否已更改?全部内容,希望文章能够帮你解决c# – 在序列化之前如何检查类文件是否已更改?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。