none
webservice 2.0 对象序列化问题 RRS feed

  • 问题

  • 开发环境:.NET 2.0

    语言:C#2.0

    描述:写了一个webservice,其中有一个类叫做GRItemsResult,用来做参数传递的。定义如下:

    [Serializable]
        [XmlInclude(typeof(CustomEKPO))]
        [XmlInclude(typeof(CustomEKKO))]
        public class GRItemsResult
        {
            public List<CustomEKPO> ReturnMTItemList { get; set; }

            public DataTable ReturnErrorTale { get; set; }

            public CustomEKKO Parameters { get; set; }

        }

    其中CustomEKPO和CustomEKKO都是简单对象,里面有很多属性。也都有申明[Serializable]

    webservice 中的方法定义如下:

    [WebMethod]
            [XmlInclude(typeof(GRItemsResult))]
            public GRItemsResult QueryItem(string orderCode)
            {

                GRItemsResult resultCollections = new GRItemsResult();
                //...省略给对象赋值部分。           

               return resultCollections ;
            }

    在网页中测试,返回结果有值,是一个正确的XML字符串。但是在客户端。对象不为null,可是对象的各个属性值都是null.请问这是为什么?(注:客户端是WINCE)


    别紧张,我不是什么好人。。。
    2010年9月25日 3:34

答案

  • 搞定。是我我粗心了。CustomEKKO 继承了另一个类,这个父类序列化的时候,把属性的名字改了。现在改过来就好了。谢谢!
    2010年9月27日 1:13

全部回复

  • 序列化CustomEKKO类失败。检查CustomEKKO是否声明为可序列化。

    DataTable不支持XML序列化

    序列化编译器产生的泛型类的话,需要用XmlElement属性指定元素的名字。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年9月25日 11:47
    版主
  • 搞定。是我我粗心了。CustomEKKO 继承了另一个类,这个父类序列化的时候,把属性的名字改了。现在改过来就好了。谢谢!
    2010年9月27日 1:13