gpt4 book ai didi

c# - 我真的需要写这个 "SerializationHelper"吗?

转载 作者:太空狗 更新时间:2023-10-29 23:48:46 25 4
gpt4 key购买 nike

我刚刚编写了这个 SerializationHelper 类,但我不敢相信这是必要的!

using System.IO;
using System.Xml.Serialization;

public static class SerializationHelper
{
public static string Serialize<T>(T obj)
{
var outStream = new StringWriter();
var ser = new XmlSerializer(typeof(T));
ser.Serialize(outStream, obj);
return outStream.ToString();
}

public static T Deserialize<T>(string serialized)
{
var inStream = new StringReader(serialized);
var ser = new XmlSerializer(typeof(T));
return (T)ser.Deserialize(inStream);
}
}

它是这样使用的:

var serialized = SerializationHelper.Serialize(myObj);

和:

var myObj = SerializationHelper.Deserialize<MyType>(serialized)

我是否遗漏了 .NET 框架中的某些内容?这不是火箭科学!

最佳答案

实际上,您调用 .NET API 的位是这些:

var ser = new XmlSerializer(typeof(T));
ser.Serialize(outStream, obj);

var ser = new XmlSerializer(typeof(T));
var obj = (T) ser.Deserialize(inStream);

代码的其余部分是您的个人专长。我认为两行代码对于调用 API 来说并不过分。你总是可以压缩它们,例如

(new XmlSerializer(typeof(T))).Serialize(outStream, obj);

var obj = (T) (new XmlSerializer(typeof(T))).Deserialize(inStream);

顺便说一句,我应该指出,我认为将 XML 数据存储在字符串变量中是一种代码味道。一旦从原始二进制形式(XDocumentXmlDocumentXPathDocument 或任何其他类型的 DOM)中取出 XML 数据,您就可以运行对抗编码问题。如果开发人员将对象序列化为编码为 X 的字符串,然后将该字符串写入编码为 Y 的磁盘文件,会怎样?不是很安全。除此之外,如果编码 X 不是 UTF-16,您甚至如何在 .NET 字符串中表示数据?

关于c# - 我真的需要写这个 "SerializationHelper"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2050385/

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