gpt4 book ai didi

c# - 交替使用 BinaryFormatter 和 XmlSerializer

转载 作者:行者123 更新时间:2023-11-30 21:01:39 27 4
gpt4 key购买 nike

我继承了大量使用 BinaryFormatter 进行序列化的代码,现在我需要对其进行调试。当前所有序列化代码都需要一个 IFormatter。

我想用 XmlSerializer 替换 BinaryFormatter,以便更轻松地检查序列化输出,但它们不兼容(没有公共(public)基础或接口(interface))。

是否有一个标准的方法来解决这个问题,例如使参数成为我的代码可以使用的某种通用序列化程序?理想情况下,我想在顶层创建我想要的任何具体序列化程序,然后将其向下传递,而不需要较低层知 Prop 体类型。

我目前拥有的示例:

BinaryFormatter bformatter = new BinaryFormatter();     //create a binary formatter
PutPw(bformatter, stream, panel.DevicePassword); //encode and stream the password

public static void PutPw(IFormatter bf, Stream stream, string pw)
{
...
bf.Serialize(stream, pw);
}

最佳答案

正如已经指出的那样,并非所有二进制可序列化的对象也是 XML 可序列化的(例如,任何具有 TimeSpan 的对象)。

但如果您可以处理这个相当严重的缺陷,那么我可能会采取的方法是创建我自己的界面。然后我将有 2 个类来实现它,一个包装二进制格式化程序,一个包装 XML 序列化程序。为了让生活更轻松,在您的应用程序使用的方法名称和参数方面,让界面与二进制格式化程序非常相似,这样您就可以相对轻松地替换具体二进制格式化程序的出现。

关于c# - 交替使用 BinaryFormatter 和 XmlSerializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13977538/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com