本节对参数相关的定义做了详细说明,包括参数相关类以及参数标准。
参数相关类
TReturnManager
public class TReturnManager …{
int returnNo = 0;
string returnMsg = "成功";
ArrayList returnStr;
TStrList returnHead;
DataTable returnData;
//数据传输方式,true为使用DataTable序列化方式传输,false为使用TStrList方式传输
const bool XML_TYPE_SCHEMA = true;
/**//// <summary>
/// 构造函数
/// </summary>
public TReturnManager( ) …{}
/**//// <summary>
/// 根据TStrList构造
/// </summary>
/// <param name="sl">TStrList数据</param>
public TReturnManager( TStrList sl ) …{}
/**//// <summary>
/// 根据DataTable构造
/// </summary>
/// <param name="dt">DataTable数据</param>
public TReturnManager( DataTable dt ) …{}
private void decodeStrList()…{}
/**//// <summary>
/// 设置返回值头部
/// </summary>
/// <param name="sl">头部数据列表</param>
public void setHead( TStrList sl)…{}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="se">自定义异常类</param>
public TReturnManager( TSvrException se ) …{}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="e">系统异常类</param>
public TReturnManager( System.Exception e ) …{}
/**//// <summary>
/// 返回XML格式数据,该函数为公开的函数,根据XML_TYPE_SCHEMA的值返回相应的数据
/// </summary>
/// <returns>返回的XML</returns>
public string returnXML()…{}
/**//// <summary>
/// 返回XML格式数据
/// </summary>
/// <returns>返回的XML</returns>
private string returnXMLSL( )…{}
/**//// <summary>
/// 返回DataTable格式数据
/// </summary>
/// <returns>返回的XML</returns>
private string returnXMLDT()…{}
}
int returnNo = 0;
string returnMsg = "成功";
ArrayList returnStr;
TStrList returnHead;
DataTable returnData;
//数据传输方式,true为使用DataTable序列化方式传输,false为使用TStrList方式传输
const bool XML_TYPE_SCHEMA = true;
/**//// <summary>
/// 构造函数
/// </summary>
public TReturnManager( ) …{}
/**//// <summary>
/// 根据TStrList构造
/// </summary>
/// <param name="sl">TStrList数据</param>
public TReturnManager( TStrList sl ) …{}
/**//// <summary>
/// 根据DataTable构造
/// </summary>
/// <param name="dt">DataTable数据</param>
public TReturnManager( DataTable dt ) …{}
private void decodeStrList()…{}
/**//// <summary>
/// 设置返回值头部
/// </summary>
/// <param name="sl">头部数据列表</param>
public void setHead( TStrList sl)…{}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="se">自定义异常类</param>
public TReturnManager( TSvrException se ) …{}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="e">系统异常类</param>
public TReturnManager( System.Exception e ) …{}
/**//// <summary>
/// 返回XML格式数据,该函数为公开的函数,根据XML_TYPE_SCHEMA的值返回相应的数据
/// </summary>
/// <returns>返回的XML</returns>
public string returnXML()…{}
/**//// <summary>
/// 返回XML格式数据
/// </summary>
/// <returns>返回的XML</returns>
private string returnXMLSL( )…{}
/**//// <summary>
/// 返回DataTable格式数据
/// </summary>
/// <returns>返回的XML</returns>
private string returnXMLDT()…{}
}
该类负责将TStrList、DataTable、TSvrException(自定义的异常类,继承自System.Exception)、System.Exception及空数据等不同类型数据转换成在Web Service接口上传输的XML数据。
TStrList类
public class TStrList
…{
private ArrayList FNameList;
private ArrayList FValueList;
private ArrayList FType;
private string FStrTitle = "NewStrList";
public int count …{get ;}
/**//// <summary>
/// 编码为XML字符
/// </summary>
/// <returns></returns>
public string toXML( )…{}
/**//// <summary>
/// 输出为Base64格式字符串
/// </summary>
/// <returns></returns>
public string toXMLBase64()…{}
/**//// <summary>
/// 构建对象–字符串
/// </summary>
/// <param name="str">字符</param>
/// <param name="isxml">传入字符是否为XML格式的</param>
public TStrList( string str, bool isxml) …{}
/**//// <summary>
/// 构建对象–字符串
/// </summary>
/// <param name="str">字符</param>
/// <param name="isxml">传入字符是否为XML格式的</param>
/// <param name="base64">传入字符是否为Base64编码的</param>
public TStrList( string str, bool isxml, bool base64) …{}
/**//// <summary>
/// 构建对象–DataTable
/// </summary>
/// <param name="dt">传入的DataTable</param>
/// <param name="str">标题</param>
public TStrList( DataTable dt, string str) …{}
/**//// <summary>
/// 系统数据类型转换成TStrList通用数据类型
/// </summary>
/// <param name="systype">系统数据类型</param>
/// <returns>TStrList通用数据类型</returns>
public string systypeToLocalType(System.Type systype)…{}
/**//// <summary>
/// 根据name值取得value
/// </summary>
/// <param name="namestr">字段名(不分大小写)</param>
/// <returns>字段值</returns>
public string valueByName( string namestr)…{}
/**//// <summary>
/// 根据name取得type
/// </summary>
/// <param name="namestr">字段名(不分大小写)</param>
/// <returns>字段类型</returns>
public string typeByName(string namestr )…{}
/**//// <summary>
/// 增加新字段
/// </summary>
/// <param name="namestr">字段名</param>
/// <param name="valuestr">字段值</param>
/// <param name="typestr">字段类型</param>
public void addNew(string namestr, string valuestr, string typestr)…{}
/**//// <summary>
/// 增加新字段
/// </summary>
/// <param name="namestr">字段名</param>
/// <param name="valuestr">字段值</param>
public void addNew(string namestr, string valuestr)…{}
/**//// <summary>
/// 过滤空值
/// </summary>
public void delSpace()…{}
/**//// <summary>
/// 删除指定字段
/// </summary>
/// <param name="namestr">字段名</param>
public void deleteByName( string namestr )…{}
/**//// <summary>
/// 解码XML
/// </summary>
/// <param name="xmlstring">传入的XML字符</param>
private void decodeXML( string xmlstring )…{}
/**//// <summary>
/// 通过字段名取得索引
/// </summary>
/// <param name="namestr">字段名</param>
/// <returns>索引</returns>
private int getIndexByName(string namestr)…{}
/**//// <summary>
/// 是否存在该名称字段
/// </summary>
/// <param name="namestr">字段名</param>
/// <returns>是否存在该名称字段</returns>
public bool hasThisName(string namestr)…{}
/**//// <summary>
/// 通过索引取得类型
/// </summary>
/// <param name="index">索引值</param>
/// <returns>字段类型</returns>
public string getType(int index)…{}
/**//// <summary>
/// 通过索引取得字段名
/// </summary>
/// <param name="index">索引值</param>
/// <returns>字段名</returns>
public string getName(int index)…{}
/**//// <summary>
/// 通过索引取得字段值
/// </summary>
/// <param name="index">索引值</param>
/// <returns>字段值</returns>
public string getValue(int index)…{}
public string StrTitle…{get;}
/**//// <summary>
/// 设置所有的名称为小写
/// </summary>
private void setNameToLowcase()…{}
/**//// <summary>
/// 克隆本对象数据
/// </summary>
public TStrList CloneAInstance…{get;}
public DataTable AsDataTable…{get;}
}
…{
private ArrayList FNameList;
private ArrayList FValueList;
private ArrayList FType;
private string FStrTitle = "NewStrList";
public int count …{get ;}
/**//// <summary>
/// 编码为XML字符
/// </summary>
/// <returns></returns>
public string toXML( )…{}
/**//// <summary>
/// 输出为Base64格式字符串
/// </summary>
/// <returns></returns>
public string toXMLBase64()…{}
/**//// <summary>
/// 构建对象–字符串
/// </summary>
/// <param name="str">字符</param>
/// <param name="isxml">传入字符是否为XML格式的</param>
public TStrList( string str, bool isxml) …{}
/**//// <summary>
/// 构建对象–字符串
/// </summary>
/// <param name="str">字符</param>
/// <param name="isxml">传入字符是否为XML格式的</param>
/// <param name="base64">传入字符是否为Base64编码的</param>
public TStrList( string str, bool isxml, bool base64) …{}
/**//// <summary>
/// 构建对象–DataTable
/// </summary>
/// <param name="dt">传入的DataTable</param>
/// <param name="str">标题</param>
public TStrList( DataTable dt, string str) …{}
/**//// <summary>
/// 系统数据类型转换成TStrList通用数据类型
/// </summary>
/// <param name="systype">系统数据类型</param>
/// <returns>TStrList通用数据类型</returns>
public string systypeToLocalType(System.Type systype)…{}
/**//// <summary>
/// 根据name值取得value
/// </summary>
/// <param name="namestr">字段名(不分大小写)</param>
/// <returns>字段值</returns>
public string valueByName( string namestr)…{}
/**//// <summary>
/// 根据name取得type
/// </summary>
/// <param name="namestr">字段名(不分大小写)</param>
/// <returns>字段类型</returns>
public string typeByName(string namestr )…{}
/**//// <summary>
/// 增加新字段
/// </summary>
/// <param name="namestr">字段名</param>
/// <param name="valuestr">字段值</param>
/// <param name="typestr">字段类型</param>
public void addNew(string namestr, string valuestr, string typestr)…{}
/**//// <summary>
/// 增加新字段
/// </summary>
/// <param name="namestr">字段名</param>
/// <param name="valuestr">字段值</param>
public void addNew(string namestr, string valuestr)…{}
/**//// <summary>
/// 过滤空值
/// </summary>
public void delSpace()…{}
/**//// <summary>
/// 删除指定字段
/// </summary>
/// <param name="namestr">字段名</param>
public void deleteByName( string namestr )…{}
/**//// <summary>
/// 解码XML
/// </summary>
/// <param name="xmlstring">传入的XML字符</param>
private void decodeXML( string xmlstring )…{}
/**//// <summary>
/// 通过字段名取得索引
/// </summary>
/// <param name="namestr">字段名</param>
/// <returns>索引</returns>
private int getIndexByName(string namestr)…{}
/**//// <summary>
/// 是否存在该名称字段
/// </summary>
/// <param name="namestr">字段名</param>
/// <returns>是否存在该名称字段</returns>
public bool hasThisName(string namestr)…{}
/**//// <summary>
/// 通过索引取得类型
/// </summary>
/// <param name="index">索引值</param>
/// <returns>字段类型</returns>
public string getType(int index)…{}
/**//// <summary>
/// 通过索引取得字段名
/// </summary>
/// <param name="index">索引值</param>
/// <returns>字段名</returns>
public string getName(int index)…{}
/**//// <summary>
/// 通过索引取得字段值
/// </summary>
/// <param name="index">索引值</param>
/// <returns>字段值</returns>
public string getValue(int index)…{}
public string StrTitle…{get;}
/**//// <summary>
/// 设置所有的名称为小写
/// </summary>
private void setNameToLowcase()…{}
/**//// <summary>
/// 克隆本对象数据
/// </summary>
public TStrList CloneAInstance…{get;}
public DataTable AsDataTable…{get;}
}
该类封装了一维表数据,其每个列表项具有name、value、type三个属性。该类型的对象数据可以与DataTable的一行进行相互转换,在Web Service中作为复杂数据类型的参数传出。
TSvrException类
public class TSvrException: System.Exception
…{
int ENo;
string EMsg;
DataTable EData;
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="Des">异常信息字符串</param>
public TSvrException( string Des )…{}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="rno">异常编码</param>
/// <param name="rmsg">异常信息</param>
public TSvrException( int rno, string rmsg ) …{}
/**//// <summary>
/// 异常编码
/// </summary>
public int rno…{get;}
/**//// <summary>
/// 设置返回数据
/// </summary>
/// <param name="dt">数据表</param>
public void setEData(DataTable dt)…{}
/**//// <summary>
/// 异常信息
/// </summary>
public string rmsg …{get;}
/**//// <summary>
/// 出现异常后可以返回数据
/// </summary>
public DataTable rdata …{get;}
}
…{
int ENo;
string EMsg;
DataTable EData;
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="Des">异常信息字符串</param>
public TSvrException( string Des )…{}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="rno">异常编码</param>
/// <param name="rmsg">异常信息</param>
public TSvrException( int rno, string rmsg ) …{}
/**//// <summary>
/// 异常编码
/// </summary>
public int rno…{get;}
/**//// <summary>
/// 设置返回数据
/// </summary>
/// <param name="dt">数据表</param>
public void setEData(DataTable dt)…{}
/**//// <summary>
/// 异常信息
/// </summary>
public string rmsg …{get;}
/**//// <summary>
/// 出现异常后可以返回数据
/// </summary>
public DataTable rdata …{get;}
}
该类继承自System.Exception类,用于封装自定义的异常信息。构造对象时可以传入异常代码和异常信息,也可以使用Des格式的异常信息。Des格式信息格式为“异常编码|异常信息”,例如“20|未找到数据”。
参数标准
接口参数对于int、bool、string等基本数据类型采用直接传入,而对于数据表及列表等数据则需要封装成统一的格式,本标准使用了TStrList的XML格式作为复杂数据参数的传输格式,其说明如下:
§ 该字符串使用标准XML格式
§ 该字符串是服务端TStrList的XML形式
§ 可表示一条记录
示例为:
详细说明如下:
<?xml version="1.0" encoding="UTF-8"?>
<row title="">
<column name="Column1" type="number">数据1</column>
<column name="Column2" type="string">数据2</column>
</row>
<row title="">
<column name="Column1" type="number">数据1</column>
<column name="Column2" type="string">数据2</column>
</row>
§ <row>为根节点,表示此行,<row>的子节点<column>表示本行的一列,包括name和type两个属性,分别表示列名和类型
呵呵 我也是SJZ得来顶你下