本节对参数相关的定义做了详细说明,包括参数相关类以及参数标准。
参数相关类
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()...{}


?????}

?
该类负责将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;}


?????}

?
该类封装了一维表数据,其每个列表项具有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;}


?????}

?
该类继承自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>为根节点,表示此行,<row>的子节点<column>表示本行的一列,包括name和type两个属性,分别表示列名和类型