none
关于Web Service的问题 RRS feed

  • 问题

  • 我创建了一个Web Service Project, 同时添加了一个类:
    namespace AMSWebServices
    {
     /// <summary>
     /// 操作物品分类
     /// </summary>
     //[WebService(Namespace = "http://tempuri.org/")]
     //[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
     //[ToolboxItem(false)]
     public class ThingsGroup : System.Web.Services.WebService
     {
      /// <summary>
      /// 唯一性编号GUID
      /// </summary>
      private string id;

      /// <summary>
      /// 获取或设置该组的ID编号
      /// </summary>
      public string ID
      {
       get { return id; }
       set { id = value; }
      }
      /// <summary>
      /// 分组的名称
      /// </summary>
      private string name;

      /// <summary>
      /// 获取或设置该组的名称
      /// </summary>
      public string Name
      {
       get { return name; }
       set { name = value; }
      }
      /// <summary>
      /// 分组的描述信息
      /// </summary>
      private string description;

      /// <summary>
      /// 获取或设置分组的描述信息
      /// </summary>
      public string Description
      {
       get { return description; }
       set { description = value; }
      }
      /// <summary>
      /// 获取一个对象实例
      /// </summary>
      /// <param name="id">分组ID编号</param>
      /// <param name="name">分组的名称</param>
      /// <param name="description">分组的描述信息</param>
      public ThingsGroup(string id, string name, string description)
      {
       //throw new System.NotImplementedException();
       this.id = id;
       this.name = name;
       this.description = description;
      }

      /// <summary>
      /// 获取一个对象实例
      /// </summary>
      public ThingsGroup()
      {
       this.id = "";
       this.name = "";
       this.description = "";
      }
      
     }

     /// <summary>
     /// ThingsGroup集合
     /// </summary>
     [WebService(Namespace = "http://gp.com/")]
     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
     [ToolboxItem(false)]
     public class ThingsGroupCollection : ICollection
     {
      ArrayList thingsGroupArray = new ArrayList();

      #region ICollection 成员
      [WebMethod]
      public void CopyTo(Array array, int index)
      {
       thingsGroupArray.CopyTo(array, index);
      }
      
      public int Count
      {
       get { return thingsGroupArray.Count; }
      }

      public bool IsSynchronized
      {
       get { return thingsGroupArray.IsSynchronized; }
      }

      public object SyncRoot
      {
       get { return thingsGroupArray.SyncRoot; }
      }
      [WebMethod]
      public void Add(ThingsGroup item)
      {
       this.thingsGroupArray.Add(item);
      }
      #endregion

      #region IEnumerable 成员
      
      public IEnumerator GetEnumerator()
      {
       return thingsGroupArray.GetEnumerator();
      }

      #endregion
      
      public ThingsGroup this[int index]
      {
       get { return (thingsGroupArray[index] as ThingsGroup); }
      }
     }
    }
    当我运行该项目时,在IE里出现下列错误:
    You must implement a default accessor on System.Array because it inherits from ICollection.
    意思是让我实现类的构造器, 但我已经实现, 不知道为什么? 请大家帮忙
    另外: 写Web Service类时可以使用[WebService], [WebMethod]等属性标记, 这样客户只调用类的方法, 当客户想使用类的属性时, 应该如何做? 有类似[WebAttributes]之类的关键字.


    Gao Peter
    2009年9月8日 8:39

答案

  • 可以
    也可以直接用T[]



    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.
    Visual C++ MVP
    2009年9月9日 2:40
    版主

全部回复

  • 报错的地方不是你的代码吧,错误消息里面提到的是你在序列化System.Array,系统不知道怎么序列化一个System.Array,因为里面可以是任何对象。

    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.
    Visual C++ MVP
    2009年9月8日 17:25
    版主
  • 谢谢您的回复, 那问题应该是我用ArrayList类型, 那请有什么其它办法可以解决些问题, 比如用List<T>是否可以呢?
    Gao Peter
    2009年9月9日 2:10
  • 可以
    也可以直接用T[]



    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.
    Visual C++ MVP
    2009年9月9日 2:40
    版主