C# 序列化和反序列化

在开发的过程中有时需要用到序列化和反序列化,比如web service ,由于这个服务支持的返回类型有限  所以我们需要对现有的对象进行序列化,需要使用的时候再进行反序列化。

1.首先我们要对需要序列化的对象进行关键字标记 [Serializable] 比如:

 [Serializable]
    public class AnswersheetRoot
    {

        public AnswersheetRoot()
        {

            AnswersheetList = new List<Answersheet>();

        }



        private List<Answersheet> _answersheetList;



        public List<Answersheet> AnswersheetList
        {

            get { return _answersheetList; }

            set { _answersheetList = value; }

        }

    }
2.序列化
[WebMethod]
    public string GetAnswerSheetList(int paperID)
    {
        List<Answersheet> sheetList = ExamCommunicationManager.GetsheetList(paperID);
        AnswersheetRoot sheetRoot = new AnswersheetRoot();
        foreach (Answersheet sheet in sheetList)
        {
            sheetRoot.AnswersheetList.Add(sheet);
        }

        XmlSerializer serilizer = new XmlSerializer(typeof(AnswersheetRoot));
        StringBuilder sbXML = new StringBuilder();
        StringWriter writer = new StringWriter(sbXML);
        serilizer.Serialize(writer, sheetRoot);
        writer.Close();
        return sbXML.ToString();
    }

3.使用时需要反序列化

 string sheetXml = serverCon.GetAnswerSheetList(paperID);
                StringReader reader = new StringReader(sheetXml.ToString());
                XmlSerializer xs = new XmlSerializer(typeof(AnswersheetRoot));
                AnswersheetRoot sheetRoot = (AnswersheetRoot)xs.Deserialize(reader);
                reader.Close();
                List<Answersheet> AnswersheetList = sheetRoot.AnswersheetList;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值