如何序列化和反序列化 对象,

这个时候你要建一个和类对应的的xml文件
<?xml version="1.0"?>
<BaseConfigInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Dbconnectstring>Data Source=(local);User ID=sa;Password=1;Initial Catalog=YIDANLUNTAN;Pooling=true</Dbconnectstring>
  <Tableprefix>dnt_</Tableprefix>
  <Forumpath>/</Forumpath>
  <Dbtype>SqlServer</Dbtype>
  <Founderuid>1</Founderuid>
</BaseConfigInfo>
剩下的就是调用了随便建一个aspx文件
using Discuz.Config;
using Discuz.Common;
using System.IO;
using System;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

       string  filename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DNT.config");
        BaseConfigInfo newBaseConfig = (BaseConfigInfo)SerializationHelper.Load(typeof(BaseConfigInfo), filename);
      
    }
}
这个个时候你就可以把xml文件里面的东西读到对象里面了
首先你要建一个类:
using System;
using System.Text;

namespace Discuz.Config
{
    /// <summary>
    /// Discuz!NT 配置信息类接口
    /// </summary>
    public interface IConfigInfo
    {
    }
    // <summary>
    /// 基本设置描述类, 加[Serializable]标记为可序列化
    /// </summary>
    [Serializable]
    public class BaseConfigInfo : IConfigInfo
    {
        #region 私有字段

        private string m_dbconnectstring = "Data Source=;User ID=dntuser;Password=;Initial Catalog=;Pooling=true";        // 数据库连接串-格式(中文为用户修改的内容):Data Source=数据库服务器地址;User ID=您的数据库用户名;Password=您的数据库用户密码;Initial Catalog=数据库名称;Pooling=true
        private string m_tableprefix = "dnt_";        // 数据库中表的前缀
        private string m_forumpath = "/";            // 论坛在站点内的路径
        private string m_dbtype = "";
        private int m_founderuid = 0;                // 创始人

        #endregion

        #region 属性

        /// <summary>
        /// 数据库连接串
        /// 格式(中文为用户修改的内容):
        ///    Data Source=数据库服务器地址;
        ///    User ID=您的数据库用户名;
        ///    Password=您的数据库用户密码;
        ///    Initial Catalog=数据库名称;Pooling=true
        /// </summary>
        public string Dbconnectstring
        {
            get { return m_dbconnectstring; }
            set { m_dbconnectstring = value; }
        }

        /// <summary>
        /// 数据库中表的前缀
        /// </summary>
        public string Tableprefix
        {
            get { return m_tableprefix; }
            set { m_tableprefix = value; }
        }

        /// <summary>
        /// 论坛在站点内的路径
        /// </summary>
        public string Forumpath
        {
            get { return m_forumpath; }
            set { m_forumpath = value; }
        }

        /// <summary>
        /// 数据库类型
        /// </summary>
        public string Dbtype
        {
            get { return m_dbtype; }
            set { m_dbtype = value; }
        }

        /// <summary>
        /// 创始人ID
        /// </summary>
        public int Founderuid
        {
            get { return m_founderuid; }
            set { m_founderuid = value; }
        }

        #endregion
    }
}

然后就是处理序列化和反序列化的函数,这里也有一个类处理
using System;
using System.IO;
using System.Xml.Serialization;

namespace Discuz.Common
{
    /// <summary>
    /// SerializationHelper 的摘要说明。
    /// </summary>
    public class SerializationHelper
    {
        private SerializationHelper()
        {
        }

        /// <summary>
        /// 反序列化
        /// </summary>
        /// <param name="type">对象类型</param>
        /// <param name="filename">文件路径</param>
        /// <returns></returns>
        public static object Load(Type type, string filename)
        {
            FileStream fs = null;
            try
            {
                // open the stream...
                fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                XmlSerializer serializer = new XmlSerializer(type);
                return serializer.Deserialize(fs);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (fs != null)
                    fs.Close();
            }
        }


        /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="obj">对象</param>
        /// <param name="filename">文件路径</param>
        public static void Save(object obj, string filename)
        {
            FileStream fs = null;
            // serialize it...
            try
            {
                fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
                XmlSerializer serializer = new XmlSerializer(obj.GetType());
                serializer.Serialize(fs, obj);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (fs != null)
                    fs.Close();
            }

        }
    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值