首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> XMLWeb >> 正文

WebService中使用自定义类的解决方法


         4、先将实体类集合序列化为表现为xml格式的string,然后在webservice中反序列化成Collection<>(注意:不可以是IList<>),然后再传递给业务层对象。

[WebMethod]
        
public string HelloStusByCollection(string sXml)
        
{
            BLL.Class1 cls 
= new BLL.Class1();
            Collection
<Student> stuList = cls.DeSerializerCollection<Student>(sXml, typeof(Collection<Student>));//先反序列化为Collection
            
return cls.GetName(stuList);
        }
DeserializerCollection方法代码如下:
        /// <summary>
        
/// 
        
/// </summary>
        
/// <typeparam name="T"></typeparam>
        
/// <param name="sXml"></param>
        
/// <param name="type"></param>
        
/// <returns></returns>

        public Collection<T> DeSerializerCollection<T>(string sXml, Type type)
        
{
            XmlReader reader 
= XmlReader.Create(new StringReader(sXml));
            System.Xml.Serialization.XmlSerializer serializer 
= new System.Xml.Serialization.XmlSerializer(type);
           
            
object obj = serializer.Deserialize(reader);
            
return (Collection<T>)obj;
        }

表现层调用代码如下:
/// <summary>
        
/// 先将实体类集合序列化为string,然后在webservice中反序列化成Collection<>,然后再传递给业务层对象
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void button4_Click(object sender, EventArgs e)
        
{
            
string str = "";

            Student stuInfo1 
= new Student();
            stuInfo1.StuName 
= "lxinxuan";
            Student stuInfo2 
= new Student();
            stuInfo2.StuName 
= "www.cnblogs.com/lxinxuan";

            Collection
<Student> stuList = new Collection<Student>();
            stuList.Add(stuInfo1);
            stuList.Add(stuInfo2);

            
string stuString = this.Serializer<Collection<Student>>(stuList);//先序列化为xml文件格式的string
            str 
= ser.HelloStusByCollection(stuString);
            MessageBox.Show(str);
        }
Serialize方法代码如下:
/// <summary>
        
/// 实体类集合序列化为字符串
        
/// </summary>
        
/// <typeparam name="T"></typeparam>
        
/// <param name="objToXml"></param>
        
/// <returns></returns>

        public string Serializer<T>(T objToXml)
        
{
            System.IO.StringWriter writer 
= new System.IO.StringWriter();
            System.Xml.Serialization.XmlSerializer serializer 
= new System.Xml.Serialization.XmlSerializer(objToXml.GetType());
            serializer.Serialize(writer, objToXml);
            
return writer.GetStringBuilder().ToString();
        }

         5、这种情况就是情况4的特例,序列化一个实体类并传递,方法类似,就不写出来,参见Demo代码。

大概就是这些了,当然传递DataSet是最传统最好的办法了,呵呵~

上一页  [1] [2] [3] 

【责编:Youping】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航