项目需要用到外部提供的WebService,由于WebService的地址不固定,因此,采用动态调用的方式。
解决办法:
1 传递对象为简单类型(string)
调用webservice方法成功之后,返回对象之前,对复杂对象进行xml序列化
返回对象中包含List结构
1:[Serializable]2:publicclassQuestionEditList : BaseModel3:{4:privateList _questionEditList =newList();5: 6:publicListQuesEditList7:{8:get {return_questionEditList ; }9:set { _questionEditList =value; }10:}11:publicQuestionEditList(ListquestionEditList)12:{13:this._questionEditList= questionEditList;14: 15:}16:publicoverridevoidFromXml(stringxml)17:{18:QuestionEditList question = (QuestionEditList)base.DeserializefromXml(xml,typeof(QuestionEditList));19:this.QuesEditList = question.QuesEditList;20:}21: 22:publicoverridestringToXml()23:{24:returnbase.SerializetoXml(this);25:}26:}序列化后的结果:102030
2 调用方拿到返回值,在进行xml反序列化
1:QuestionEditList questionList =newQuestionEditList();2:questionList.FromXml(obj.ToString());通过这样的方式传递,就可以获取到可以控制的对象。 序列化,反序列化方法1 序列化
1:protectedstringSerializetoXml(objecto)2:{3:XmlSerializer serializer =newXmlSerializer(o.GetType(),"");4:MemoryStream w =newMemoryStream();5:XmlTextWriter writer =newXmlTextWriter(w,Encoding.Default);6:writer.Formatting = Formatting.None;7:serializer.Serialize((XmlWriter)writer,o);8:writer.Close();9:returnEncoding.Default.GetString(w.ToArray()).Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"","").Replace("","");10:}
2 反序列化
1:protectedobjectDeserializefromXml(strings,Type t)2:{3:XmlSerializer serializer =newXmlSerializer(t);4:objectobj2 =null;5:XmlTextReader xmlReader =newXmlTextReader(s,XmlNodeType.Element,null);6:obj2 = serializer.Deserialize(xmlReader);7:xmlReader.Close();8:returnobj2;9:}
原文链接:http://code.01yun.com/asp0dm/asp0net0dm/20110604/52724.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。