C#中序列化怎么实现-创新互联
这篇文章主要介绍了C#中序列化怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

贴一下自己序列化的代码:
public class XMLUtil
{
///
/// XML & Datacontract Serialize & Deserialize Helper
///
///
///
///
public static string Serializer(T serialObject) where T : class
{
string result = string.Empty;
using (MemoryStream mem = new MemoryStream())
{
using (XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8))
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
ser.Serialize(writer, serialObject);
result = Encoding.UTF8.GetString(mem.ToArray());
}
}
return result;
}
public static T Deserialize(string str) where T : class
{
T result = null;
using (MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(str)))
{
using (StreamReader streamReader = new StreamReader(memoryStream))
{
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
result = (T)xmlSerializer.Deserialize(memoryStream);
}
}
return result;
}
} 上面的写法持续序列化不会有内存溢出的性能问题,之前一直被告知直接引用公司某位老鸟封装好的dll来序列化,后来发现了老是出现内存溢出,贴一下它的错误写法,仅供吸取教训:
public class XMLUtil
{
///
/// XML & Datacontract Serialize & Deserialize Helper
///
///
///
///
public static string Serializer(T serialObject) where T : class
{
//try
//{
XmlSerializer ser = new XmlSerializer(typeof(T));
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);
ser.Serialize(writer, serialObject);
writer.Close();
return Encoding.UTF8.GetString(mem.ToArray());
//}
//catch (Exception ex)
//{
// return null;
//}
}
public static T Deserialize(string str) where T : class
{
//try
//{
XmlSerializer mySerializer = new XmlSerializer(typeof(T));
StreamReader mem2 = new StreamReader(
new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str)),
System.Text.Encoding.UTF8);
return (T)mySerializer.Deserialize(mem2);
//}
//catch (Exception)
//{
// return null;
//}
}
//public static string Json_SerializeObject(object value)
//{
// return Newtonsoft.Json.JsonConvert.SerializeObject(value);
//}
//public static object Json_DeserializeObject(string value)
//{
// return Newtonsoft.Json.JsonConvert.DeserializeObject(value);
//}
//public static T Json_DeserializeObject(string value)
//{
// return Newtonsoft.Json.JsonConvert.DeserializeObject(value);
//}
} 感谢你能够认真阅读完这篇文章,希望小编分享的“C#中序列化怎么实现”这篇文章对大家有帮助,同时也希望大家多多支持创新互联成都网站设计公司,关注创新互联成都网站设计公司行业资讯频道,更多相关知识等着你来学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、网站设计器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页标题:C#中序列化怎么实现-创新互联
网站URL:http://www.jxjierui.cn/article/cscjic.html


咨询
建站咨询
