我正在编写一个 Windows 服务应用程序,该应用程序需要在执行期间反复序列化和反序列化 XML 文档。因为我需要序列化和反序列化在编译期间未知的泛型类型(我不知道先验需要序列化/反序列化多少类型),所以我想知道保留缓存是否是个好主意我实例化的 DataContractSerializer 对象用于序列化和反序列化对象。
我问这个问题是因为我知道缓存 XmlSerializer 类实例是个好主意,因为它们在内存中创建了一个动态程序集,并且在内存中动态创建的程序集不会被垃圾收集。
我读到 DataContractSerializer 依赖于轻量级代码生成,但我不熟悉它的细节。这就是我问这个问题的原因,我需要了解如果我根据需要实例化 DataContractSerializer 实例,它会导致我像 XmlSerializer 那样导致内存泄漏?
我选择使用 DataContractSerializer 而不是 XmlSerializer 来序列化内部属性。