Sérialisation et désérialisation de classe d'entité C# 2 (DataContractSerializer)

黄舟
Libérer: 2017-02-15 11:30:00
original
1994 Les gens l'ont consulté

<pre class="csharp"><pre class="csharp"><pre class="csharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.IO;
using System.Xml;

namespace Common.Utility.XMLSerialization
{
    /// <summary>
    /// DataContractSerializer
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class DataContractSerializer<T>
    {
        /// <summary>
        /// 实体序列化成xml string
        /// </summary>
        /// <param name="meta"></param>
        /// <returns></returns>
        public static string ToXMLString(T meta)
        {
            DataContractSerializer dcs = new DataContractSerializer(typeof(T));
            string xmlStr = string.Empty;
            using (MemoryStream ms = new MemoryStream())
            {
                try
                {
                    dcs.WriteObject(ms, meta);
                    xmlStr = Encoding.UTF8.GetString(ms.ToArray());
                    ms.Close();
                }
                catch
                {
                    throw;
                }
            }
            return xmlStr;
        }
        /// <summary>
        /// DataContract序列化
        /// </summary>
        /// <param name="value"></param>
        /// <param name="knownTypes">已知类型的集合</param>
        /// <returns></returns>
        public static string ToXMLString(object value, IEnumerable<Type> knownTypes = null)
        {
            try
            {
                DataContractSerializer dataContractSerializer = new DataContractSerializer(value.GetType(), knownTypes);
                using (MemoryStream ms = new MemoryStream())
                {
                    dataContractSerializer.WriteObject(ms, value);
                    ms.Seek(0, SeekOrigin.Begin);
                    using (StreamReader sr = new StreamReader(ms))
                    {
                        return sr.ReadToEnd();
                    }
                }
            }
            catch
            {
                throw;
            }
        }
        /// <summary>
        /// 实体反序列化
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static T ReadFromXML(string xmlStr)
        {
            T meta;
            try
            {
                DataContractSerializer dcs = new DataContractSerializer(typeof(T));
                using (TextReader reader = new StringReader(xmlStr))
                {
                    using (XmlReader xReader = XmlReader.Create(reader))
                    {
                        meta = (T)dcs.ReadObject(xReader);
                    }
                }
            }
            catch
            {
                throw;
            }
            return meta;
        }

        /// <summary>
        /// 实体反序列化
        /// </summary>
        /// <param name="xmlStr"></param>
        /// <param name="knownTypes">IEnumerable<Type></param>
        /// <returns></returns>
        public static T ReadFromXML(string xmlStr, IEnumerable<Type> knownTypes = null)
        {
            T meta;
            try
            {
                DataContractSerializer dcs = new DataContractSerializer(typeof(T), knownTypes);
                using (TextReader reader = new StringReader(xmlStr))
                {
                    using (XmlReader xReader = XmlReader.Create(reader))
                    {
                        meta = (T)dcs.ReadObject(xReader);
                    }
                }
            }
            catch
            {
                throw;
            }
            return meta;
        }
    }
}
Copier après la connexion


Ce qui précède est le contenu de la sérialisation et de la désérialisation de classe d'entité C# 2 (DataContractSerializer). Suivez le site PHP chinois (www.php.cn) !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal