gpt4 book ai didi

c# - 序列化和反序列化 .NET 对象的最快方法

转载 作者:IT王子 更新时间:2023-10-29 03:38:48 24 4
gpt4 key购买 nike

我正在寻找序列化和反序列化 .NET 对象的最快方法。这是我目前所拥有的:

public class TD
{
public List<CT> CTs { get; set; }
public List<TE> TEs { get; set; }
public string Code { get; set; }
public string Message { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }

public static string Serialize(List<TD> tData)
{
var serializer = new XmlSerializer(typeof(List<TD>));

TextWriter writer = new StringWriter();
serializer.Serialize(writer, tData);

return writer.ToString();
}

public static List<TD> Deserialize(string tData)
{
var serializer = new XmlSerializer(typeof(List<TD>));

TextReader reader = new StringReader(tData);

return (List<TD>)serializer.Deserialize(reader);
}
}

最佳答案

这是您的模型(发明了 CTTE),使用 protobuf-net (但保留使用 XmlSerializer 的能力,这很有用 - 特别是对于迁移);我谦虚地提出(如果您需要,可以提供大量证据)这个是 .NET 中最快的(或者肯定是最快的)通用序列化程序。

如果您需要字符串,只需对二进制文件进行 base-64 编码。

[XmlType]
public class CT {
[XmlElement(Order = 1)]
public int Foo { get; set; }
}
[XmlType]
public class TE {
[XmlElement(Order = 1)]
public int Bar { get; set; }
}
[XmlType]
public class TD {
[XmlElement(Order=1)]
public List<CT> CTs { get; set; }
[XmlElement(Order=2)]
public List<TE> TEs { get; set; }
[XmlElement(Order = 3)]
public string Code { get; set; }
[XmlElement(Order = 4)]
public string Message { get; set; }
[XmlElement(Order = 5)]
public DateTime StartDate { get; set; }
[XmlElement(Order = 6)]
public DateTime EndDate { get; set; }

public static byte[] Serialize(List<TD> tData) {
using (var ms = new MemoryStream()) {
ProtoBuf.Serializer.Serialize(ms, tData);
return ms.ToArray();
}
}

public static List<TD> Deserialize(byte[] tData) {
using (var ms = new MemoryStream(tData)) {
return ProtoBuf.Serializer.Deserialize<List<TD>>(ms);
}
}
}

关于c# - 序列化和反序列化 .NET 对象的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143421/

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