首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

WebService新手求教,

2013-03-10 
WebService新手求教,急!!在线等/// summary/// 采购单主单/// /summarypublic class OT_TK_CGD{public

WebService新手求教,急!!在线等
    /// <summary>
    /// 采购单主单
    /// </summary>
    public class OT_TK_CGD
    {
        public string 字段1 = "!#%&";
        。。。。。。。。。。。。。。。。。。。
    }
    /// <summary>
    /// 采购单从单
    /// </summary>
    public class OT_TK_CGD_D
    {
     public string 字段1 = "!#%&";
        。。。。。。。。。。。。。。。。。。。

    }
我需要写一个WebService功能如下:

提供给客户一个方法。两个参数,一个是主表的实体类,一个是从表的实体类集合,别人调用此WebService
可以看到我的接口里的实体类,然后赋值为OBJ类型的值,
[WebMethod]
    public string updaCGD(主表实体类OBJ,从表实体类集合OBJ)
    {
    }
因为实体类中数据类型问题。要求参数得是OBJECT类型的,小弟初步了解WebService,望大神们把帮助下!不胜感激! webservice object
[解决办法]
  [Serializable()]
  public class OT_TK_CGD
     {
         public string 字段1 = "!#%&";
         。。。。。。。。。。。。。。。。。。。
     }

   [Serializable()]
  public class OT_TK_CGD_D
     {
      public string 字段1 = "!#%&";
         。。。。。。。。。。。。。。。。。。。
 
    }
[WebMethod]
     public string updaCGD(OT_TK_CGD cgd, List<OT_TK_CGD_D> cgds)
     {
     }

调用者那边也需要定义这两个实体类,并且类上都需要标记可序列化即  [Serializable()]

[解决办法]
引用类型需要标记可序列化即[Serializable()]
值类型或基元类型可以直接传输,不用序列化。
[解决办法]
[Serializable]
public class OT_TK_CGD
{
...
}
[Serializable]
public class OT_TK_CGD_D
{
...
}

不过这样不科学,不建议
[解决办法]
webservice 方法的参数类型最好设置为基础数据类型. 如果你硬是要传递引用类型,
webservice端的引用参数类型,客户端也得有 . 就是引用同一实体层.
我没有这样做过,理论上是这样的.我一般都是使用基础类型 
[解决办法]
web service在调用方要知道你的实体类,如果你不在你的wsdl当中描述这个对象的话,调用方是不能转换成你想要的object对象的。
你也不应该这样转换,最好按照1楼的说法去做。
[解决办法]
using System.Runtime.Serialization;
using System.ServiceModel;
我一般先会写一个接口
  [ServiceContract]
    public interface IXXX//命名自己处理
    {
      [OperationContract]
      public string updaCGD(主表实体类OBJ,从表实体类集合OBJ)
      {


      }
  }
再实现这个接口
   public class XXX: IXXX
    {
      public string updaCGD(主表实体类OBJ,从表实体类集合OBJ)
      {
         //实现这个方法
      }
    }
至于用到的实体,每个字段加上[DataMember]属性
  /// <summary>
    /// 采购单主单
    /// </summary>
    public class OT_TK_CGD
    {
       [DataMember]
        public string 字段1 = "!#%&";
        。。。。。。。。。。。。。。。。。。。
    }

热点排行