附青云而上

web service 自定义类的传递

      基本处理方法:类对象的序列化与反序列化

        /// <summary>
        /// 实体类集合序列化为字符串
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="objToXml"></param>
        /// <returns>字符串</returns>
        private 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();
        }


        /// <summary>
        /// 反序列化成类

        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sXml"></param>
        /// <param name="type"></param>
        /// <returns>泛型对象</returns>
        private 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 (T)obj;
        }

        /// <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;
        }

 

例子:web端向web service端发送一个请求,返回序列化后的string字符串,然后在web端再反序列化得到自定义类对象。

      实体层:自定义对象TestEntity

      业务层:

         public   class BllTest

         {

                   public Entity GetTestEntity(string strParam)

                   {

                            ...

                    }

          }

      web service端:

         public  class BllTest

         {

                   [WebMethod]
                  public string GetTestEntity (string strParam)
                 {
                        BllTest bll = new BllTest(); 
                        TestEntity te = bll.GetTestEntity (strParam);
                        if (te!= null)
                       {
                             string strRtn = Serializer<TestEntity>(te);
                             return strRtn;
                       }
                       else
                       {
                             return string.Empty;
                       }
                  }

           }

       web层:

       private void GetMethod()

       {

              string strTestEntity=BllTest .GetTestEntity(string strParam);
               if ((string)strTestEntity!= string.Empty)
                {
                    TestEntity entity= DeSerializerCollection<TestEntity>((string)strTestEntity, typeof(TestEntity)); //反序列化后赋给实体。
                }

       }

posted on 2010-05-20 23:05  华丽的低调  阅读(295)  评论(0)    收藏  举报

导航