频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

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

来源: 作者: 出处:巧巧读书 2007-05-26 进入讨论组
下一页 1 2 3 
         所谓自定义类,不知道我有没有表达清楚,这里指的就是petshop中的Model层实体类了。
         比如以下代码:
WebService中使用自定义类的解决方法(图一)
using System;
WebService中使用自定义类的解决方法(图一)using System.Collections;
WebService中使用自定义类的解决方法(图一)using System.Collections.Generic;
WebService中使用自定义类的解决方法(图一)using System.Text;
WebService中使用自定义类的解决方法(图一)
WebService中使用自定义类的解决方法(图一)namespace Model
WebService中使用自定义类的解决方法(图二)WebService中使用自定义类的解决方法(图三)WebService中使用自定义类的解决方法(图四){
WebService中使用自定义类的解决方法(图五)    [Serializable]
WebService中使用自定义类的解决方法(图五)    public class Student
WebService中使用自定义类的解决方法(图六)WebService中使用自定义类的解决方法(图七)    WebService中使用自定义类的解决方法(图四){
WebService中使用自定义类的解决方法(图五)        private string stuName;
WebService中使用自定义类的解决方法(图五)
WebService中使用自定义类的解决方法(图五)        public Student()
WebService中使用自定义类的解决方法(图六)WebService中使用自定义类的解决方法(图七)        WebService中使用自定义类的解决方法(图四){ }
WebService中使用自定义类的解决方法(图五)
WebService中使用自定义类的解决方法(图五)        public string StuName
WebService中使用自定义类的解决方法(图六)WebService中使用自定义类的解决方法(图七)        WebService中使用自定义类的解决方法(图四){
WebService中使用自定义类的解决方法(图六)WebService中使用自定义类的解决方法(图七)            get WebService中使用自定义类的解决方法(图四){ return this.stuName; }
WebService中使用自定义类的解决方法(图六)WebService中使用自定义类的解决方法(图七)            set WebService中使用自定义类的解决方法(图四){ this.stuName = value; }
WebService中使用自定义类的解决方法(图八)        }
WebService中使用自定义类的解决方法(图八)    }
WebService中使用自定义类的解决方法(图五)WebService中使用自定义类的解决方法(图九)}
WebService中使用自定义类的解决方法(图一)

         webservice传递的内容必须是可序列化的,不管是参数还是返回值。上面定义的实体类Student,在类定义之前标示了[Serializable],指明可序列化的。但当涉及到实体类集合的时候,如果使用IList<Student>来表示,就会抱错,原因是IList是不可以序列化的,这种情况下,我们就可以使用System.Collections.ObjectModel.Collection<Student>来表示一个实体类集合。这里给出了两种可能出现的实体类和实体类集合,以下就开始说明各种解决方法:

         1、把实体类集合,作为Object[]传递。
      这种情况下,我们必须使用webservice中的实体类,传递的是实体类集合对应的Object[]传递,WebService中方法的参数类型是ArrayList。
比如WebService中的方法是:
WebService中使用自定义类的解决方法(图一)[XmlInclude(typeof(Student))]
WebService中使用自定义类的解决方法(图一)        [WebMethod]
WebService中使用自定义类的解决方法(图一)        public string HelloStus(ArrayList stuList)
WebService中使用自定义类的解决方法(图二)WebService中使用自定义类的解决方法(图三)        WebService中使用自定义类的解决方法(图四){
WebService中使用自定义类的解决方法(图五)            BLL.Class1 cls = new BLL.Class1();
WebService中使用自定义类的解决方法(图五)            return cls.GetName(stuList);
WebService中使用自定义类的解决方法(图九)        }
         别漏了[XmlInclude(typeof(Student))]这一行,不然在表现层就引用不到WebService中的实体类了。
这个时候,在表现层添加web引用,表现层中的调用代码如下:(参考Demo中的button1_Click()方法)

/// <summary>
        /// 必须使用webservice中的实体类,传递实体类集合,作为Object[]传递,WebService中的参数类型是ArrayList,并提供一个将集合转化为Object[]的公共类
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            string str = "";

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

            IList<localhost.Student> stuList = new List<localhost.Student>();
            stuList.Add(stuInfo1);
            stuList.Add(stuInfo2);

            object[] array = this.ConvertToArray<localhost.Student>(stuList);//这是一个将集合转换为Objec[]的泛型方法
            str = ser.HelloStus(array);//传递Object[],返回值是StuName的值

            MessageBox.Show(str);
        }
//这是一个将集合转换为Objec[]的泛型方法
 private object[] ConvertToArray<T>(IList<T> tList)
        {
            object[] array = new object[tList.Count];
            int i = 0;
            foreach (T t in tList)
            {
                array[i] = t;
                i++;
            }
            return array;
        }

本文:http://www.qqread.com/dotnet/j314173.html进入讨论组讨论。
下一页 1 2 3 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章