黄宗银 1 year ago
parent
commit
6b54dce518
61 changed files with 6393 additions and 6 deletions
  1. BIN
      Wfj/Charge32/Charge32.dll
  2. BIN
      Wfj/Charge32/Charge32.exe
  3. BIN
      Wfj/Charge32/Charge32.pdb
  4. 21 0
      Wfj/Charge32/Charge32.xml
  5. BIN
      Wfj/Charge32/DB.DS32.dll
  6. BIN
      Wfj/Charge32/DB.DS32.pdb
  7. 3 3
      Wfj/Charge32/DockerBuild.txt
  8. BIN
      Wfj/GsProxy/Apq.Web5.dll
  9. BIN
      Wfj/GsProxy/Apq.Web5.pdb
  10. 163 0
      Wfj/GsProxy/Apq.Web5.xml
  11. BIN
      Wfj/GsProxy/Apq.dll
  12. BIN
      Wfj/GsProxy/Apq.pdb
  13. 5375 0
      Wfj/GsProxy/Apq.xml
  14. 1 0
      Wfj/GsProxy/Config/00_配置目录.json
  15. BIN
      Wfj/GsProxy/ConsoleTables.dll
  16. 26 0
      Wfj/GsProxy/DefaultConfig/AppConfig.json
  17. 154 0
      Wfj/GsProxy/DefaultConfig/log4net.config
  18. BIN
      Wfj/GsProxy/Fleck.dll
  19. BIN
      Wfj/GsProxy/Google.Protobuf.dll
  20. BIN
      Wfj/GsProxy/Grpc.AspNetCore.Server.ClientFactory.dll
  21. BIN
      Wfj/GsProxy/Grpc.AspNetCore.Server.Reflection.dll
  22. BIN
      Wfj/GsProxy/Grpc.AspNetCore.Server.dll
  23. BIN
      Wfj/GsProxy/Grpc.AspNetCore.Web.dll
  24. BIN
      Wfj/GsProxy/Grpc.Core.Api.dll
  25. BIN
      Wfj/GsProxy/Grpc.Net.Client.dll
  26. BIN
      Wfj/GsProxy/Grpc.Net.ClientFactory.dll
  27. BIN
      Wfj/GsProxy/Grpc.Net.Common.dll
  28. BIN
      Wfj/GsProxy/Grpc.Reflection.dll
  29. 623 0
      Wfj/GsProxy/GsProxy.deps.json
  30. BIN
      Wfj/GsProxy/GsProxy.dll
  31. BIN
      Wfj/GsProxy/GsProxy.exe
  32. BIN
      Wfj/GsProxy/GsProxy.pdb
  33. 21 0
      Wfj/GsProxy/GsProxy.runtimeconfig.json
  34. BIN
      Wfj/GsProxy/Newtonsoft.Json.dll
  35. BIN
      Wfj/GsProxy/System.CommandLine.dll
  36. BIN
      Wfj/GsProxy/System.Configuration.ConfigurationManager.dll
  37. BIN
      Wfj/GsProxy/System.Security.Cryptography.ProtectedData.dll
  38. BIN
      Wfj/GsProxy/System.Security.Permissions.dll
  39. BIN
      Wfj/GsProxy/cs/System.CommandLine.resources.dll
  40. BIN
      Wfj/GsProxy/de/System.CommandLine.resources.dll
  41. BIN
      Wfj/GsProxy/es/System.CommandLine.resources.dll
  42. BIN
      Wfj/GsProxy/fr/System.CommandLine.resources.dll
  43. BIN
      Wfj/GsProxy/it/System.CommandLine.resources.dll
  44. BIN
      Wfj/GsProxy/ja/System.CommandLine.resources.dll
  45. BIN
      Wfj/GsProxy/ko/System.CommandLine.resources.dll
  46. BIN
      Wfj/GsProxy/log4net.dll
  47. BIN
      Wfj/GsProxy/pl/System.CommandLine.resources.dll
  48. BIN
      Wfj/GsProxy/protobuf-net.Core.dll
  49. BIN
      Wfj/GsProxy/protobuf-net.dll
  50. BIN
      Wfj/GsProxy/pt-BR/System.CommandLine.resources.dll
  51. BIN
      Wfj/GsProxy/ru/System.CommandLine.resources.dll
  52. BIN
      Wfj/GsProxy/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll
  53. BIN
      Wfj/GsProxy/tr/System.CommandLine.resources.dll
  54. BIN
      Wfj/GsProxy/zh-Hans/System.CommandLine.resources.dll
  55. BIN
      Wfj/GsProxy/zh-Hant/System.CommandLine.resources.dll
  56. 3 3
      Wfj/WsRepeater/DockerBuild.txt
  57. BIN
      Wfj/WsRepeater/WsRepeater.dll
  58. BIN
      Wfj/WsRepeater/WsRepeater.exe
  59. BIN
      Wfj/WsRepeater/WsRepeater.pdb
  60. 1 0
      Wfj/WsRepeater/WsRepeater.runtimeconfig.json
  61. 2 0
      Wfj/WsRepeater/runtimeconfig.template.json

BIN
Wfj/Charge32/Charge32.dll


BIN
Wfj/Charge32/Charge32.exe


BIN
Wfj/Charge32/Charge32.pdb


+ 21 - 0
Wfj/Charge32/Charge32.xml

@@ -95,6 +95,26 @@
             <param name="openid">用户的唯一标识,根据APPID以及QQ号码生成,即不同的appid下,同一个QQ号生成的OpenID是不一样的。</param>
             <param name="openkey">用户的会话密钥(session key)</param>
         </member>
+        <member name="T:Charge32.Controllers.GsController">
+            <summary>
+            游戏服
+            </summary>
+        </member>
+        <member name="M:Charge32.Controllers.GsController.ListPets_OnStage(System.String,System.Int64)">
+            <summary>
+            获取出战的宠物列表
+            </summary>
+            <param name="ApiVersion">接口版本</param>
+            <param name="ActorID">角色ID</param>
+        </member>
+        <member name="M:Charge32.Controllers.GsController.SavePets_OnStage(System.String,System.Int64,System.Collections.Generic.IList{System.String})">
+            <summary>
+            保存出战的宠物列表
+            </summary>
+            <param name="ApiVersion">接口版本</param>
+            <param name="ActorID">角色ID</param>
+            <param name="PetsInStage">已出战的宠物列表(为空则表示没宠物上场)</param>
+        </member>
         <member name="T:Charge32.Controllers.LoginController">
             <summary>
             登录模块
@@ -106,6 +126,7 @@
             </summary>
             <param name="ApiVersion">接口版本</param>
             <param name="UserID">UserID</param>
+            <param name="UserPwd">用户输入的密码</param>
         </member>
         <member name="P:Charge32.DTO.Exts360DTO.item_id">
             <summary>

BIN
Wfj/Charge32/DB.DS32.dll


BIN
Wfj/Charge32/DB.DS32.pdb


+ 3 - 3
Wfj/Charge32/DockerBuild.txt

@@ -17,9 +17,9 @@ cd DockerImg/charge32/
 docker login [email protected] registry.cn-guangzhou.aliyuncs.com
 
 # amd64上
-docker rmi registry.cn-guangzhou.aliyuncs.com/apq/charge32:amd64_20240314
-docker build -t registry.cn-guangzhou.aliyuncs.com/apq/charge32:amd64_20240314 .
-docker push registry.cn-guangzhou.aliyuncs.com/apq/charge32:amd64_20240314
+docker rmi registry.cn-guangzhou.aliyuncs.com/apq/charge32:amd64_20240315
+docker build -t registry.cn-guangzhou.aliyuncs.com/apq/charge32:amd64_20240315 .
+docker push registry.cn-guangzhou.aliyuncs.com/apq/charge32:amd64_20240315
 
 # arm64上
 docker rmi registry.cn-guangzhou.aliyuncs.com/apq/charge32:arm64

BIN
Wfj/GsProxy/Apq.Web5.dll


BIN
Wfj/GsProxy/Apq.Web5.pdb


+ 163 - 0
Wfj/GsProxy/Apq.Web5.xml

@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>Apq.Web5</name>
+    </assembly>
+    <members>
+        <member name="T:Apq.Extension.Ext_HttpContext">
+            <summary>
+            Http请求扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetPostString(Microsoft.AspNetCore.Http.HttpRequest,System.Text.Encoding)">
+            <summary>
+            获取POST提交过来的内容
+            </summary>
+            <param name="me"></param>
+            <param name="encoding">指定编码,默认UTF8</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetParams(Microsoft.AspNetCore.Http.HttpRequest,System.Boolean,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})">
+            <summary>
+            获取参数列表(POST/GET)
+            </summary>
+            <param name="me"></param>
+            <param name="PostFirst">是:优先获取POST参数;否:优先获取GET参数</param>
+            <param name="encoding">从url提取参数时采用的编码</param>
+            <param name="encodeFunc">从url提取参数时的编码算法,也可以是解码算法。默认使用WebUtility.UrlDecode</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedQuery(Microsoft.AspNetCore.Http.HttpRequest)">
+            <summary>
+            获取已排序的参数列表(GET)
+            </summary>
+            <param name="me"></param>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedForm(Microsoft.AspNetCore.Http.HttpRequest)">
+            <summary>
+            获取已排序的参数列表(POST)
+            </summary>
+            <param name="me"></param>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedParams(Microsoft.AspNetCore.Http.HttpRequest,System.Boolean,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})">
+            <summary>
+            获取已排序的参数列表(POST/GET)
+            </summary>
+            <param name="me"></param>
+            <param name="PostFirst">是:优先获取POST参数;否:优先获取GET参数</param>
+            <param name="encoding">从url提取参数时采用的编码</param>
+            <param name="encodeFunc">从url提取参数时的编码算法,也可以是解码算法。默认使用WebUtility.UrlDecode</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetParamValue``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}},System.String)">
+            <summary>
+            获取参数值
+            </summary>
+            <typeparam name="T">值的类型</typeparam>
+            <param name="me"></param>
+            <param name="key">参数名称</param>
+            <returns>参数值,是否获取成功</returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetParams(System.Net.Http.HttpRequestMessage,System.Boolean)">
+            <summary>
+            获取参数列表(POST/GET)
+            </summary>
+            <param name="PostFirst">是:优先获取POST参数;否:优先获取GET参数</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.ToQueryString(System.Collections.Generic.Dictionary{System.String,System.String},System.Text.Encoding)">
+            <summary>
+            转为QueryString,如果不为空,则以?开头
+            </summary>
+        </member>
+        <member name="T:Apq.Web5.Filters.CallLogFilterAttribute">
+            <summary>
+            用log4net记录控制器方法的调用日志
+            </summary>
+        </member>
+        <member name="T:Apq.Web5.Filters.NoCallLogAttribute">
+            <summary>
+            标记为不记录调用日志
+            </summary>
+        </member>
+        <member name="T:Apq.Web5.Filters.WebParamsFilterAttribute">
+            <summary>
+            参数值绑定支持Form中的参数,如果Form中有值则取Form中的值
+            </summary>
+        </member>
+        <member name="T:Apq.Web5.JsonReturn.JsonRtn`1">
+            <summary>
+            Json返回结构:返回单值Value
+            </summary>
+            <typeparam name="T">Value的类型</typeparam>
+        </member>
+        <member name="T:Apq.Web5.JsonReturn.JsonRtnBase">
+            <summary>
+            Json返回结构基类
+            </summary>
+        </member>
+        <member name="P:Apq.Web5.JsonReturn.JsonRtnBase.Success">
+            <summary>
+            服务器是否执行成功(注意:有时也用于业务结果)
+            </summary>
+        </member>
+        <member name="P:Apq.Web5.JsonReturn.JsonRtnBase.Message">
+            <summary>
+            信息(执行成功的信息 或 执行失败的信息)
+            </summary>
+        </member>
+        <member name="T:Apq.Web5.JsonReturn.JsonRtnEasyuiTable`1">
+            <summary>
+            Json返回结构:符合easyui格式的表格
+            </summary>
+            <typeparam name="T"></typeparam>
+        </member>
+        <member name="T:Apq.Web5.PlAccessor.PHP.QueryStringBuilder">
+            <summary>
+             Helps up build a query string by converting an object into a set of named-values and making a query string out of it.
+            </summary>
+        </member>
+        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.BuildQueryString(System.Object,System.String)">
+            <summary>
+            Builds the query string from the given instance.
+            </summary>
+        </member>
+        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.GetUriString(System.String)">
+            <summary>
+            Convert the key-value pairs that we've collected into an actual query string.
+            </summary>
+        </member>
+        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.AddEntry(System.String,System.Object,System.Boolean)">
+            <summary>
+            Adds a single entry to the collection.
+            </summary>
+            <param name="prefix"> The prefix to use when generating the key of the entry. Can be null. </param>
+            <param name="instance"> The instance to add.
+             
+             - If the instance is a dictionary, the entries determine the key and values.
+             - If the instance is a collection, the keys will be the index of the entries, and the value
+             will be each item in the collection.
+             - If allowObjects is true, then the object's properties' names will be the keys, and the
+             values of the properties will be the values.
+             - Otherwise the instance is added with the given prefix to the collection of items. </param>
+            <param name="allowObjects"> true to add the properties of the given instance (if the object is
+             not a collection or dictionary), false to add the object as a key-value pair. </param>
+        </member>
+        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.Add(System.String,System.Collections.Generic.IEnumerable{Apq.Web5.PlAccessor.PHP.QueryStringBuilder.Entry})">
+            <summary>
+            Adds the given collection of entries.
+            </summary>
+        </member>
+        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.GetObjectAdapter(System.Object)">
+            <summary>
+             Returns a collection of entries that represent the properties on the object.
+            </summary>
+        </member>
+        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.GetArrayAdapter(System.Collections.IEnumerable)">
+            <summary>
+             Returns a collection of entries that represent items in the collection.
+            </summary>
+        </member>
+        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.GetDictionaryAdapter(System.Collections.IDictionary)">
+            <summary>
+             Returns a collection of entries that represent items in the dictionary.
+            </summary>
+        </member>
+    </members>
+</doc>

BIN
Wfj/GsProxy/Apq.dll


BIN
Wfj/GsProxy/Apq.pdb


+ 5375 - 0
Wfj/GsProxy/Apq.xml

@@ -0,0 +1,5375 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>Apq</name>
+    </assembly>
+    <members>
+        <member name="T:Apq.ApqMath.Bytes8">
+            <summary>
+            8字节数值
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.Ext_MathRange.CopyRangeList``1(System.Collections.Generic.IEnumerable{Apq.ApqMath.MathRange{``0}})">
+            <summary>
+            复制列表(及其中每一项)
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.Ext_MathRange.ExcludeValues``1(System.Collections.Generic.IEnumerable{Apq.ApqMath.MathRange{``0}},``0[])">
+            <summary>
+            从范围列表中排除一个或多个值
+            </summary>
+        </member>
+        <member name="T:Apq.ApqMath.MathRange`1">
+            <summary>
+            数值范围。默认:[Min, Max)
+            </summary>
+        </member>
+        <member name="P:Apq.ApqMath.MathRange`1.Is最多一个值">
+            <summary>
+            范围内是否最多一个值(即:最多包含边界或边界都不包含)
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.MathRange`1.ExcludeValue(`0)">
+            <summary>
+            从范围中排除一个值,最多返回两个新的范围
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.MathRange`1.ExcludeValues(System.Collections.Generic.IEnumerable{`0})">
+            <summary>
+            从范围中排除多个值,返回新的范围列表
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomInt(System.Int32,System.Int32)">
+            <summary>
+            返回[Min,Max)范围内的随机整数
+            </summary>
+            <param name="Min">最小值</param>
+            <param name="Max">不包含该最大值</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomLong(System.Int64,System.Int64)">
+            <summary>
+            返回[Min,Max)范围内的随机整数
+            </summary>
+            <param name="Min">最小值</param>
+            <param name="Max">不包含该最大值</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomFloat(System.Single,System.Single)">
+            <summary>
+            返回[Min,Max)范围内的随机浮点数
+            </summary>
+            <param name="Min">最小值</param>
+            <param name="Max">不包含该最大值</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomDouble(System.Double,System.Double)">
+            <summary>
+            返回[Min,Max)范围内的随机浮点数
+            </summary>
+            <param name="Min">最小值</param>
+            <param name="Max">不包含该最大值</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomDecimal(System.Decimal,System.Decimal)">
+            <summary>
+            返回[Min,Max)范围内的随机decimal值
+            </summary>
+            <param name="Min">最小值</param>
+            <param name="Max">不包含该最大值</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomInt(Apq.ApqMath.MathRange{System.Int32})">
+            <summary>
+            返回范围内的随机整数
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomLong(Apq.ApqMath.MathRange{System.Int64})">
+            <summary>
+            返回范围内的随机整数
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomFloat(Apq.ApqMath.MathRange{System.Single})">
+            <summary>
+            返回范围内的随机浮点数
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomDouble(Apq.ApqMath.MathRange{System.Double})">
+            <summary>
+            返回范围内的随机浮点数
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomDecimal(Apq.ApqMath.MathRange{System.Decimal})">
+            <summary>
+            返回范围内的随机decimal值
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomInt(Apq.ApqMath.MathRange{System.Int32},System.Collections.Generic.IEnumerable{System.Int32})">
+            <summary>
+            返回范围内的随机整数(排除值之后)
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomLong(Apq.ApqMath.MathRange{System.Int64},System.Collections.Generic.IEnumerable{System.Int64})">
+            <summary>
+            返回范围内的随机整数(排除值之后)
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomFloat(Apq.ApqMath.MathRange{System.Single},System.Collections.Generic.IEnumerable{System.Single})">
+            <summary>
+            返回范围内的随机浮点数(排除值之后)
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomDouble(Apq.ApqMath.MathRange{System.Double},System.Collections.Generic.IEnumerable{System.Double})">
+            <summary>
+            返回范围内的随机浮点数(排除值之后)
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomNum.RandomDecimal(Apq.ApqMath.MathRange{System.Decimal},System.Collections.Generic.IEnumerable{System.Decimal})">
+            <summary>
+            返回范围内的随机decimal值(排除值之后)
+            </summary>
+        </member>
+        <member name="T:Apq.ApqMath.RandomWithWeighting`1">
+            <summary>
+            加权随机算法
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomWithWeighting`1.GenList(System.Collections.Generic.IList{`0},System.Collections.Generic.IList{System.Int32},System.Int32)">
+            <summary>
+            按对应位置生成加权随机范围
+            </summary>
+        </member>
+        <member name="M:Apq.ApqMath.RandomWithWeighting`1.GetOne(System.Collections.Generic.IEnumerable{Apq.ApqMath.WeightingItem{`0}},System.Func{Apq.ApqMath.WeightingItem{`0},System.Boolean})">
+            <summary>
+            按权重随机取一条
+            </summary>
+            <param name="predicate">随机的范围。</param>
+        </member>
+        <member name="M:Apq.ApqMath.RandomWithWeighting`1.GetMulti(System.Collections.Generic.IEnumerable{Apq.ApqMath.WeightingItem{`0}},System.Int32,System.Func{Apq.ApqMath.WeightingItem{`0},System.Boolean})">
+            <summary>
+            按权重随机取多条
+            </summary>
+            <param name="count">随机结果需要多少条</param>
+            <param name="predicate">每次随机的范围。可通过该参数使产生的随机结果中没有重复项</param>
+            <remarks>如果范围内已无法随机出结果,就会停止。因此不一定能返回指定的条数</remarks>
+        </member>
+        <member name="T:Apq.ApqMath.WeightingItem">
+            <summary>
+            加权项
+            </summary>
+        </member>
+        <member name="P:Apq.ApqMath.WeightingItem.Weighting">
+            <summary>
+            权重
+            </summary>
+        </member>
+        <member name="P:Apq.ApqMath.WeightingItem.GotTimes">
+            <summary>
+            已随机到的次数
+            </summary>
+        </member>
+        <member name="T:Apq.ApqMath.WeightingItem`1">
+            <summary>
+            加权项
+            </summary>
+            <typeparam name="T">该加权项代表的实例的类型</typeparam>
+        </member>
+        <member name="P:Apq.ApqMath.WeightingItem`1.Value">
+            <summary>
+            代表的实例项
+            </summary>
+        </member>
+        <member name="M:Apq.AssemblyLoadContextHelper.SetProbeDirs(System.Runtime.Loader.AssemblyLoadContext,System.String)">
+            <summary>
+            设置探测目录:加载dll时查找哪些文件夹
+            </summary>
+            <param name="probeDirs">分号分隔(;)</param>
+        </member>
+        <member name="T:Apq.Cast">
+            <summary>
+            通用类型转换。
+            </summary>
+        </member>
+        <member name="M:Apq.Cast.TryChangeType``1(System.Object)">
+            <summary>
+            通用类型转换,失败时返回 default(T)
+            </summary>
+            <typeparam name="T">输出类型</typeparam>
+            <param name="obj">原始对象</param>
+        </member>
+        <member name="M:Apq.Cast.TryChangeType``1(System.Object,``0)">
+            <summary>
+            通用类型转换,失败时返回 fValue
+            </summary>
+            <typeparam name="T">输出类型</typeparam>
+            <param name="obj">原始对象</param>
+            <param name="fValue">转换失败时返回的值</param>
+        </member>
+        <member name="M:Apq.Cast.TryChangeType(System.Object,System.Type,System.Object)">
+            <summary>
+            通用类型转换,失败时返回失败值。注意:泛型只支持一个形参,主要是为了Nullable&lt;T&gt;。
+            </summary>
+            <param name="obj">原始对象</param>
+            <param name="type">输出类型</param>
+            <param name="fValue">失败值(匹配优先级比上面的泛型方法低,因此不能加参数默认值)</param>
+        </member>
+        <member name="M:Apq.Cast.ChangeType``1(System.Object)">
+            <summary>
+            通用类型转换,失败时返回 default(T)
+            </summary>
+            <typeparam name="T">输出类型</typeparam>
+            <param name="obj">原始对象</param>
+        </member>
+        <member name="M:Apq.Cast.ChangeType``1(System.Object,``0)">
+            <summary>
+            通用类型转换,失败时返回 fValue
+            </summary>
+            <typeparam name="T">输出类型</typeparam>
+            <param name="obj">原始对象</param>
+            <param name="fValue">转换失败时返回的值</param>
+        </member>
+        <member name="M:Apq.Cast.ChangeType(System.Object,System.Type,System.Object)">
+            <summary>
+            通用类型转换,失败时返回失败值。注意:泛型只支持一个形参,主要是为了Nullable&lt;T&gt;。
+            </summary>
+            <param name="obj">原始对象</param>
+            <param name="type">输出类型</param>
+            <param name="fValue">失败值(匹配优先级比上面的泛型方法低,因此不能加参数默认值)</param>
+            <returns>转换结果和是否转换成功</returns>
+            <remarks>http://www.cnblogs.com/youring2/archive/2012/07/26/2610035.html</remarks>
+        </member>
+        <member name="M:Apq.Cast.ToExcelObject(System.Object)">
+            <summary>
+            任意值转换到 Excel 能接受的值
+            </summary>
+        </member>
+        <member name="M:Apq.Cast.BytesToHexString(System.Collections.Generic.IEnumerable{System.Byte})">
+            <summary>
+            将字节串转换为16进制字符串
+            </summary>
+        </member>
+        <member name="M:Apq.Cast.HexStringToBytes(System.String)">
+            <summary>
+            将16进制字符串转换为字节串
+            </summary>
+        </member>
+        <member name="M:Apq.Cast.HexStringToBytesList(System.String)">
+            <summary>
+            将16进制字符串转换为字节串
+            </summary>
+        </member>
+        <member name="T:Apq.Char">
+            <summary>
+            Apq.Char
+            </summary>
+        </member>
+        <member name="M:Apq.Char.Random(System.Char[])">
+            <summary>
+            获取随机字符
+            </summary>
+            <param name="All">字符集</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Char.Random(System.String)">
+            <summary>
+            获取随机字符
+            </summary>
+            <param name="All">字符集</param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.Collections.Dictionary`3">
+            <summary>
+            一键2值字典(映射)(典型应用:从Excel中导入指定的列到DataTable中对应的列)
+            </summary>
+            <typeparam name="TKey"></typeparam>
+            <typeparam name="TValue1"></typeparam>
+            <typeparam name="TValue2"></typeparam>
+        </member>
+        <member name="F:Apq.Collections.Dictionary`3.m_lst">
+            <summary>
+            映射列表
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.Dictionary`3.Item(`0)">
+            <summary>
+            获取或设置映射
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.GetValue1(`0)">
+            <summary>
+            获取Value1
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.GetValue2(`0)">
+            <summary>
+            获取Value2
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.SetValue1(`0,`1)">
+            <summary>
+            设置Value1
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.Collections.Dictionary`3.Keys">
+            <summary>
+            [只读]
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.SetValue2(`0,`2)">
+            <summary>
+            设置Value2
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.IndexOf(`0)">
+            <summary>
+            返回指定Key在列表中的位置,-1表示不存在
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.Add(`0,`1,`2)">
+            <summary>
+            添加映射
+            </summary>
+            <param name="key"></param>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.Clear">
+            <summary>
+            清除所有映射
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.ContainsKey(`0)">
+            <summary>
+            检测是否已包含指定Key
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Collections.Dictionary`3.Remove(`0)">
+            <summary>
+            移除指定键的映射
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.Collections.KeyValuePair`3">
+            <summary>
+            单条 一键2值 数据
+            </summary>
+            <typeparam name="TKey"></typeparam>
+            <typeparam name="TValue1"></typeparam>
+            <typeparam name="TValue2"></typeparam>
+        </member>
+        <member name="F:Apq.Collections.KeyValuePair`3.Key">
+            <summary>
+            键
+            </summary>
+        </member>
+        <member name="F:Apq.Collections.KeyValuePair`3.Value1">
+            <summary>
+            值1
+            </summary>
+        </member>
+        <member name="F:Apq.Collections.KeyValuePair`3.Value2">
+            <summary>
+            值2
+            </summary>
+        </member>
+        <member name="T:Apq.Collections.ListChangedEventHandler`1">
+            <summary>
+            集合已更改(单项)
+            </summary>
+        </member>
+        <member name="T:Apq.Collections.EventArgsListChanged`1">
+            <summary>
+            集合已更改的数据(单项)
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.EventArgsListChanged`1.Item">
+            <summary>
+            获取或设置被操作的子项
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.EventArgsListChanged`1.#ctor(`0,System.ComponentModel.ListChangedType,System.Int32)">
+            <summary>
+            集合已更改的数据(单项)
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.EventArgsListChanged`1.#ctor(`0,System.ComponentModel.ListChangedType,System.Int32,System.Int32)">
+            <summary>
+            集合已更改的数据(单项)
+            </summary>
+        </member>
+        <member name="T:Apq.Collections.Ext_IList">
+            <summary>
+            IList&lt;T&gt;扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.Ext_IList.Reset``2(System.Collections.IList,System.Collections.IEnumerable,System.Func{``1,``0})">
+            <summary>
+            用另一个集合重置当前集合。
+            </summary>
+            <typeparam name="T">目标类型(子项)</typeparam>
+            <typeparam name="TSrc">来源类型(子项)</typeparam>
+            <param name="lst">当前集合</param>
+            <param name="list">来源集合</param>
+            <param name="create">提供创建目标类型对象的方法</param>
+        </member>
+        <member name="T:Apq.Collections.HisQueue`1">
+            <summary>
+            历史队列
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.HisQueue`1.ReserveLately(System.Int32)">
+            <summary>
+            保留最近的行数(删除多出的更早的行)
+            </summary>
+            <returns>删除的行</returns>
+        </member>
+        <member name="M:Apq.Collections.HisQueue`1.Add(`0[])">
+            <summary>
+            添加行
+            </summary>
+            <returns>最后一个添加的Key(从1开始,失败则返回-1)</returns>
+        </member>
+        <member name="M:Apq.Collections.HisQueue`1.Early(System.Int32)">
+            <summary>
+            获取最早的行(默认一行)
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.HisQueue`1.Lately(System.Int32)">
+            <summary>
+            获取最近的行(默认一行)
+            </summary>
+        </member>
+        <member name="T:Apq.Collections.IListWapper">
+            <summary>
+            IList封装
+            </summary>
+        </member>
+        <member name="F:Apq.Collections.IListWapper.m_List">
+            <summary>
+            System.Collections.IList
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.#ctor(System.Collections.IList)">
+            <summary>
+            装饰
+            </summary>
+            <param name="List"></param>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.#ctor">
+            <summary>
+            新建列表并装饰
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.IListWapper.IsFixedSize">
+            <summary>
+            获取一个值,该值指示 System.Collections.IList 是否具有固定大小。
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.IListWapper.IsReadOnly">
+            <summary>
+            获取一个值,该值指示 System.Collections.IList 是否为只读。
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.IListWapper.Item(System.Int32)">
+            <summary>
+            获取或设置指定索引处的元素。
+            </summary>
+            <param name="index">要获得或设置的元素从零开始的索引。</param>
+            <returns>指定索引处的元素。</returns>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.Add(System.Object)">
+            <summary>
+            将某项添加到 System.Collections.IList 中。
+            </summary>
+            <param name="value">要添加到 System.Collections.IList 的 System.Object。</param>
+            <returns>新元素的插入位置。</returns>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.Clear">
+            <summary>
+            从 System.Collections.IList 中移除所有项。
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.Contains(System.Object)">
+            <summary>
+            确定 System.Collections.IList 是否包含特定值。
+            </summary>
+            <param name="value">要在 System.Collections.IList 中查找的 System.Object。</param>
+            <returns>如果在 System.Collections.IList 中找到 System.Object,则为 true;否则为 false。</returns>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.IndexOf(System.Object)">
+            <summary>
+            确定 System.Collections.IList 中特定项的索引。
+            </summary>
+            <param name="value">要在 System.Collections.IList 中查找的 System.Object。</param>
+            <returns>如果在列表中找到,则为 value 的索引;否则为 -1。</returns>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.Insert(System.Int32,System.Object)">
+            <summary>
+            将一个项插入指定索引处的 System.Collections.IList。
+            </summary>
+            <param name="index">从零开始的索引,应在该位置插入 value。</param>
+            <param name="value">要插入 System.Collections.IList 中的 System.Object。</param>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.Remove(System.Object)">
+            <summary>
+            从 System.Collections.IList 中移除特定对象的第一个匹配项。
+            </summary>
+            <param name="value">要从 System.Collections.IList 移除的 System.Object。</param>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.RemoveAt(System.Int32)">
+            <summary>
+            移除指定索引处的 System.Collections.IList 项。
+            </summary>
+            <param name="index">从零开始的索引(属于要移除的项)。</param>
+        </member>
+        <member name="P:Apq.Collections.IListWapper.Count">
+            <summary>
+            获取 System.Collections.ICollection 中包含的元素数。
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.IListWapper.IsSynchronized">
+            <summary>
+            获取一个值,该值指示是否同步对 System.Collections.ICollection 的访问(线程安全)。
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.IListWapper.SyncRoot">
+            <summary>
+            获取可用于同步 System.Collections.ICollection 访问的对象。
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.CopyTo(System.Array,System.Int32)">
+            <summary>
+            从特定的 System.Array 索引处开始,将 System.Collections.ICollection 的元素复制到一个 System.Array 中。
+            </summary>
+            <param name="array">作为从 System.Collections.ICollection 复制的元素的目标位置的一维 System.Array。System.Array 必须具有从零开始的索引。</param>
+            <param name="index">array 中从零开始的索引,从此处开始复制。</param>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.GetEnumerator">
+            <summary>
+            返回一个循环访问集合的枚举数。
+            </summary>
+            <returns>可用于循环访问集合的 System.Collections.IEnumerator 对象。</returns>
+        </member>
+        <member name="E:Apq.Collections.IListWapper.ListChanged">
+            <summary>
+            ListChanged 事件
+            </summary>
+        </member>
+        <member name="F:Apq.Collections.IListWapper.MayListChanged">
+            <summary>
+            是否启用 ListChanged
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.OnListChanged(System.ComponentModel.ListChangedEventArgs)">
+            <summary>
+            引发 ListChanged
+            </summary>
+            <param name="e"></param>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.Contains(System.Collections.IList,System.Object)">
+            <summary>
+            返回列表中是否包含指定项(支持null)
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.AddUnique(System.Object)">
+            <summary>
+            将某项添加到 System.Collections.Generic.IList 中,该项唯一。
+            </summary>
+            <returns>新项的插入位置。</returns>
+        </member>
+        <member name="M:Apq.Collections.IListWapper.Reset(System.Collections.IEnumerable)">
+            <summary>
+            用另一个集合重置当前集合
+            </summary>
+        </member>
+        <member name="T:Apq.Collections.IListWapper`1">
+            <summary>
+            IList&lt;T&gt;封装
+            </summary>
+        </member>
+        <member name="F:Apq.Collections.IListWapper`1.m_List">
+            <summary>
+            System.Collections.Generic.IList
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.#ctor(System.Collections.Generic.IList{`0})">
+            <summary>
+            装饰
+            </summary>
+            <param name="List"></param>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.#ctor">
+            <summary>
+            新建列表并装饰
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.IndexOf(`0)">
+            <summary>
+            返回项在列表中的索引位置
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.Insert(System.Int32,`0)">
+            <summary>
+            将一个项插入指定索引处
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.RemoveAt(System.Int32)">
+            <summary>
+            移除指定索引处的元素
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.IListWapper`1.Item(System.Int32)">
+            <summary>
+            获取或设置指定索引处的元素
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.Add(`0)">
+            <summary>
+            将某项添加到列表中
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.Clear">
+            <summary>
+            移除所有项
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.Contains(`0)">
+            <summary>
+            确定列表是否包含特定项
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.CopyTo(`0[],System.Int32)">
+            <summary>
+            将列表的所有项复制到数组指定索引处
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.IListWapper`1.Count">
+            <summary>
+            获取列表中包含的元素数
+            </summary>
+        </member>
+        <member name="P:Apq.Collections.IListWapper`1.IsReadOnly">
+            <summary>
+            列表是否只读
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.Remove(`0)">
+            <summary>
+            移除子项。没有找到 item,该方法也会返回 false
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.GetEnumerator">
+            <summary>
+            返回一个循环访问列表的枚举器
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.System#Collections#IEnumerable#GetEnumerator">
+            <summary>
+            返回一个循环访问列表的枚举器
+            </summary>
+        </member>
+        <member name="E:Apq.Collections.IListWapper`1.ListChanged">
+            <summary>
+            ListChanged 事件
+            </summary>
+        </member>
+        <member name="F:Apq.Collections.IListWapper`1.MayListChanged">
+            <summary>
+            是否启用 ListChanged
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.OnListChanged(Apq.Collections.EventArgsListChanged{`0})">
+            <summary>
+            引发 ListChanged
+            </summary>
+            <param name="e"></param>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.Contains(System.Collections.Generic.IList{`0},`0)">
+            <summary>
+            返回列表中是否包含指定项(支持null)
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.AddUnique(`0)">
+            <summary>
+            将某项添加到 System.Collections.Generic.IList 中,该项唯一。
+            </summary>
+            <returns>新项的插入位置。</returns>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.AddRange(Apq.Collections.IListWapper{`0})">
+            <summary>
+            添加列表
+            </summary>
+            <param name="values"></param>
+        </member>
+        <member name="M:Apq.Collections.IListWapper`1.Reset(System.Collections.Generic.IEnumerable{`0})">
+            <summary>
+            用另一个集合重置当前集合
+            </summary>
+        </member>
+        <member name="T:Apq.Configs">
+            <summary>
+            配置缓存(配置文件名不能重复,即使是位于不同目录)
+            </summary>
+        </member>
+        <member name="M:Apq.Configs.Init">
+            <summary>
+            对新创建的实例进行初始化
+            </summary>
+        </member>
+        <member name="M:Apq.Configs.GetConfig(System.String,System.String)">
+            <summary>
+            获取配置,缓存中不存在时,自动查找Json配置文件并加入缓存
+            </summary>
+        </member>
+        <member name="P:Apq.Configs.Item(System.String,System.String)">
+            <summary>
+            配置文件名不能重复,即使是位于不同目录
+            </summary>
+        </member>
+        <member name="P:Apq.Configs.AppSettings">
+            <summary>
+            appsettings.json
+            </summary>
+        </member>
+        <member name="P:Apq.Configs.AppConfig">
+            <summary>
+            AppConfig.json
+            </summary>
+        </member>
+        <member name="T:Apq.Configuration.ConfigBase">
+            <summary>
+            配置基类
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.ConfigBase.FilePath">
+            <summary>
+            配置文件路径(或文件名、或接口地址)
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.ConfigBase.ConfigName">
+            <summary>
+            配置命名
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.ConfigBase.Load(System.Boolean)">
+            <summary>
+            加载配置
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.ConfigBase.Get(System.String)">
+            <summary>
+            获取配置值
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.ConfigBase.Set(System.String,System.String)">
+            <summary>
+            设置配置值
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.ConfigBase.Get``1(System.String)">
+            <summary>
+            获取配置值
+            </summary>
+        </member>
+        <member name="T:Apq.Configuration.FileConfig">
+            <summary>
+            通过文件保存的配置(先加载DefaultConfig目录,再加载Config目录下的同名文件)
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.FileConfig.Configuration_m">
+            <summary>
+            从文件加载出来的配置
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.FileConfig.DefaultFilePath_m">
+            <summary>
+            默认配置文件名
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.FileConfig.UserFilePath_m">
+            <summary>
+            用户配置文件名
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.FileConfig.ConfigName">
+            <summary>
+            配置命名
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.FileConfig.Get(System.String)">
+            <summary>
+            获取配置值
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.FileConfig.Set(System.String,System.String)">
+            <summary>
+            设置配置值
+            </summary>
+            <remarks>由派生类实现保存到文件</remarks>
+        </member>
+        <member name="T:Apq.Configuration.JsonConfig">
+            <summary>
+            .json配置文件链
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.JsonConfig.Load(System.Boolean)">
+            <summary>
+            加载配置
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.JsonConfig.Set(System.String,System.String)">
+            <summary>
+            设置配置值
+            </summary>
+        </member>
+        <member name="T:Apq.Configuration.XmlConfig">
+            <summary>
+            .xml配置文件链
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.Load(System.Boolean)">
+            <summary>
+            加载配置
+            </summary>
+        </member>
+        <member name="T:Apq.ConnectionStrings.Access2007.OleDbConnection">
+            <summary>
+            OLEDB 连接字符串[可能不对]
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Access2007.OleDbConnection.ConnectionStringFormat">
+            <summary>
+            带格式的连接字符串
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Access2007.OleDbConnection.ConnectionStringDBPwdFormat">
+            <summary>
+            文件密码部分
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Access2007.OleDbConnection.GetConnectionString(System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource">文件地址</param>
+            <param name="UserName">用户名</param>
+            <param name="pwd">用户密码</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Access2007.OleDbConnection.GetConnectionString(System.String,System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource">文件地址</param>
+            <param name="UserName">用户名</param>
+            <param name="pwd">用户密码</param>
+            <param name="dbpwd">文件密码</param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.ConnectionStrings.Access.OleDbConnection">
+            <summary>
+            OLEDB 连接字符串[可能不对]
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Access.OleDbConnection.ConnectionStringFormat">
+            <summary>
+            带格式的连接字符串
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Access.OleDbConnection.ConnectionStringDBPwdFormat">
+            <summary>
+            文件密码部分
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Access.OleDbConnection.GetConnectionString(System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource">文件地址</param>
+            <param name="UserName">用户名</param>
+            <param name="pwd">用户密码</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Access.OleDbConnection.GetConnectionString(System.String,System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource">文件地址</param>
+            <param name="UserName">用户名</param>
+            <param name="pwd">用户密码</param>
+            <param name="dbpwd">文件密码</param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.ConnectionStrings.Common">
+            <summary>
+            连接字符串公用类
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Common.GetConnectionString(Apq.ConnectionStrings.DBProduct,System.String,System.Int32,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+        </member>
+        <member name="T:Apq.ConnectionStrings.DBProduct">
+            <summary>
+            数据库产品
+            </summary>
+        </member>
+        <member name="F:Apq.ConnectionStrings.DBProduct.MsSql">
+            <summary>
+            MsSql
+            </summary>
+        </member>
+        <member name="F:Apq.ConnectionStrings.DBProduct.MySql">
+            <summary>
+            MySql
+            </summary>
+        </member>
+        <member name="F:Apq.ConnectionStrings.DBProduct.Oracle">
+            <summary>
+            Oracle
+            </summary>
+        </member>
+        <member name="F:Apq.ConnectionStrings.DBProduct.Redis">
+            <summary>
+            Redis
+            </summary>
+        </member>
+        <member name="T:Apq.ConnectionStrings.EF6.EntryConnection">
+            <summary>
+            EF6的 连接字符串
+            实例使用方法:通过属性设置各项值(resName,provider,provider connection string,MultipleActiveResultSets),最后调用GetConnectionString方法获取
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.EF6.EntryConnection.GetConnectionString(System.String,System.String,System.String,System.Boolean)">
+            <summary>
+            获取连接字符串
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.EF6.EntryConnection.ResName">
+            <summary>
+            ResName
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.EF6.EntryConnection.DBConnectionString">
+            <summary>
+            DBConnectionString
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.EF6.EntryConnection.DBProvider">
+            <summary>
+            DBProvider
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.EF6.EntryConnection.MultipleActiveResultSets">
+            <summary>
+            DBName
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.EF6.EntryConnection.GetConnectionString">
+            <summary>
+            获取连接字符串
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.ConnectionStrings.Excel2007.OleDbConnection">
+            <summary>
+            OLEDB 连接字符串
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Excel2007.OleDbConnection.ConnectionStringFormat">
+            <summary>
+            带格式的连接字符串
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Excel2007.OleDbConnection.GetConnectionString(System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Excel2007.OleDbConnection.GetConnectionString(System.String,System.String,System.String,System.Boolean)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource"></param>
+            <param name="HDR">首行是否为列名["Yes"]</param>
+            <param name="IMEX">是否全以文本格式读取["0"]</param>
+            <param name="IsXml">是否为Xml文件</param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.ConnectionStrings.Excel.OleDbConnection">
+            <summary>
+            OLEDB 连接字符串
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Excel.OleDbConnection.ConnectionStringFormat">
+            <summary>
+            带格式的连接字符串
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Excel.OleDbConnection.GetConnectionString(System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Excel.OleDbConnection.GetConnectionString(System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource"></param>
+            <param name="HDR">首行是否为列名["Yes"]</param>
+            <param name="IMEX">是否全以文本格式读取["1"]</param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.ConnectionStrings.MySql.MySqlConnection">
+            <summary>
+            MySql 连接字符串
+            实例使用方法:通过属性设置各项值(IP,Uid,Pwd必选),最后调用GetConnectionString方法获取
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.MySql.MySqlConnection.CreateConnection(System.String,System.Int32,System.String,System.String,System.String,System.String)">
+            <summary>
+            创建MsSql连接对象
+            </summary>
+            <param name="Server"></param>
+            <param name="Port"></param>
+            <param name="Uid"></param>
+            <param name="Pwd"></param>
+            <param name="dbName"></param>
+            <param name="Option"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.MySql.MySqlConnection.GetConnectionString(System.String,System.Int32,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="Uid">用户名</param>
+            <param name="Pwd">密码</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.MySql.MySqlConnection.GetConnectionString(System.String,System.Int32,System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="Uid">用户名</param>
+            <param name="Pwd">密码</param>
+            <param name="dbName">默认数据库名</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.MySql.MySqlConnection.GetConnectionString(System.String,System.Int32,System.String,System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="Uid">用户名</param>
+            <param name="Pwd">密码</param>
+            <param name="dbName">默认数据库名</param>
+            <param name="Option">其余选项</param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.ConnectionStrings.MySql.MySqlConnection.IP">
+            <summary>
+            IP
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.MySql.MySqlConnection.Port">
+            <summary>
+            Port
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.MySql.MySqlConnection.Uid">
+            <summary>
+            Uid
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.MySql.MySqlConnection.DBName">
+            <summary>
+            DBName
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.MySql.MySqlConnection.Pwd">
+            <summary>
+            密码
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.MySql.MySqlConnection.Option">
+            <summary>
+            其余选项(直接添加到连接字符串后面)
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.MySql.MySqlConnection.GetConnectionString">
+            <summary>
+            获取连接字符串
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.ConnectionStrings.Oracle.OracleConnection">
+            <summary>
+            OracleConnection 连接字符串,使用tns
+            实例使用方法:通过属性设置各项值(UserId,Pwd必选),最后调用GetConnectionString方法获取
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Oracle.OracleConnection.GetConnectionString(System.String,System.Int32,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="Uid">用户名</param>
+            <param name="Pwd">密码</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Oracle.OracleConnection.GetConnectionString(System.String,System.Int32,System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="Uid">用户名</param>
+            <param name="Pwd">密码</param>
+            <param name="dbName">默认数据库名</param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Oracle.OracleConnection.IP">
+            <summary>
+            IP
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Oracle.OracleConnection.Port">
+            <summary>
+            Port
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Oracle.OracleConnection.Uid">
+            <summary>
+            Uid
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Oracle.OracleConnection.DBName">
+            <summary>
+            DBName
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Oracle.OracleConnection.Pwd">
+            <summary>
+            密码
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Oracle.OracleConnection.GetConnectionString">
+            <summary>
+            获取连接字符串
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.ConnectionStrings.SQLite.SQLiteConnection">
+            <summary>
+            SQLite 连接字符串
+            实例使用方法:通过属性设置各项值(FilePath必选),最后调用GetConnectionString方法获取
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.SQLite.SQLiteConnection.GetConnectionString(System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="FilePath">文件路径(最好是绝对路径)</param>
+            <param name="Pwd">密码</param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLite.SQLiteConnection.FilePath">
+            <summary>
+            文件路径(最好是绝对路径)
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLite.SQLiteConnection.Pwd">
+            <summary>
+            密码
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.SQLite.SQLiteConnection.GetConnectionString">
+            <summary>
+            获取连接字符串
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.ConnectionStrings.SQLServer.SqlConnection">
+            <summary>
+            SqlConnection 连接字符串
+            实例使用方法:通过属性设置各项值(IP,Port,UserId,Pwd必选),最后调用GetConnectionString方法获取
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.SQLServer.SqlConnection.GetConnectionString(System.String,System.Int32,System.String,System.String,System.String,System.Boolean,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="UserId">用户名</param>
+            <param name="Pwd">密码</param>
+            <param name="dbName">默认数据库名</param>
+            <param name="Async">是否允许异步</param>
+            <param name="AppName">客户端程序名称</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.SQLServer.SqlConnection.GetConnectionString(System.String,System.Int32,System.String,System.String,System.Boolean,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="UserId">用户名</param>
+            <param name="Pwd">密码</param>
+            <param name="Async">是否允许异步</param>
+            <param name="AppName">客户端程序名称</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.SQLServer.SqlConnection.GetConnectionString(System.String,System.Int32,System.String,System.String,System.String,System.String,System.Boolean,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="UserId">用户名</param>
+            <param name="Pwd">密码</param>
+            <param name="dbName">默认数据库名</param>
+            <param name="Option">其余选项</param>
+            <param name="Async">是否允许异步</param>
+            <param name="AppName">客户端程序名称</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.SQLServer.SqlConnection.GetConnectionString(System.String,System.Int32,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="IP">服务器地址</param>
+            <param name="Port">端口</param>
+            <param name="UserId">用户名</param>
+            <param name="Pwd">密码</param>
+            <param name="dbName">默认数据库名</param>
+            <param name="Mirror">镜像地址(IP,Port)</param>
+            <param name="Option">其余选项</param>
+            <param name="Async">是否允许异步</param>
+            <param name="AppName">客户端程序名称</param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.IP">
+            <summary>
+            IP
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.Port">
+            <summary>
+            Port
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.UserId">
+            <summary>
+            UserId
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.DBName">
+            <summary>
+            DBName
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.AppName">
+            <summary>
+            客户端程序名称
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.Mirror">
+            <summary>
+            镜像IP
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.Pwd">
+            <summary>
+            密码
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.UseTrusted">
+            <summary>
+            使用信任连接(winodws登录)
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.Async">
+            <summary>
+            是否允许异步
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.SQLServer.SqlConnection.Option">
+            <summary>
+            其余选项(直接添加到连接字符串后面)
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.SQLServer.SqlConnection.GetConnectionString">
+            <summary>
+            获取连接字符串
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.SQLServer.SqlConnection.TestAvailable(System.Boolean)">
+            <summary>
+            测试连接可用性
+            </summary>
+            <param name="ThrowException">连接失败时是否抛出异常</param>
+        </member>
+        <member name="T:Apq.ConnectionStrings.Textfile.OleDbConnection">
+            <summary>
+            OLEDB 连接字符串
+            </summary>
+        </member>
+        <member name="P:Apq.ConnectionStrings.Textfile.OleDbConnection.ConnectionStringFormat">
+            <summary>
+            带格式的连接字符串
+            </summary>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Textfile.OleDbConnection.GetConnectionString(System.String)">
+            <summary>
+            Excel 带格式的连接字符串
+            </summary>
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ConnectionStrings.Textfile.OleDbConnection.GetConnectionString(System.String,System.String,System.String)">
+            <summary>
+            获取连接字符串
+            </summary>
+            <param name="dataSource"></param>
+            <param name="HDR">首行是否为列名["Yes"]</param>
+            <param name="FMT">指定分隔符或指明文本等宽{Fixed:等宽,TabDelimited:Tab分隔,Delimited(,):以括号内容分隔}</param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.CSMember">
+            <summary>
+            表示C#编程中某个对象具有某个名称的成员
+            </summary>
+            <remarks>
+            表示C#编程中某个对象具有某个名称的成员
+            </remarks>
+        </member>
+        <member name="M:Apq.CSMember.#ctor(System.Object,System.String)">
+            <summary>
+            表示C#编程中某个对象具有某个名称的成员
+            </summary>
+            <remarks>
+            表示C#编程中某个对象具有某个名称的成员
+            </remarks>
+        </member>
+        <member name="P:Apq.CSMember.Obj">
+            <summary>
+            获取或设置对象
+            </summary>
+        </member>
+        <member name="P:Apq.CSMember.MemberName">
+            <summary>
+            获取或设置成员名
+            </summary>
+        </member>
+        <member name="M:Apq.CSMember.Equals(Apq.CSMember)">
+            <summary>
+            相等比较
+            </summary>
+        </member>
+        <member name="M:Apq.CSMember.GetHashCode">
+            <summary>
+            获取哈希值
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.CSMember.Equals(System.Object)">
+            <summary>
+            相等比较
+            </summary>
+        </member>
+        <member name="M:Apq.CSMember.op_Equality(Apq.CSMember,Apq.CSMember)">
+            <summary>
+            ==运算符
+            </summary>
+        </member>
+        <member name="M:Apq.CSMember.op_Inequality(Apq.CSMember,Apq.CSMember)">
+            <summary>
+            !=运算符
+            </summary>
+        </member>
+        <member name="T:Apq.DB.DBAdapterBase">
+            <summary>
+            数据库适配器基类
+            </summary>
+        </member>
+        <member name="P:Apq.DB.DBAdapterBase.DBAdapter">
+            <summary>
+            获取或设置内部数据库适配器(设置时自动检测列映射和CRUD命令,如果缺失,自动添加)
+            </summary>
+        </member>
+        <member name="T:Apq.DB.DbParameterCollectionHelper">
+            <summary>
+            DbParameterCollectionHelper
+            </summary>
+        </member>
+        <member name="P:Apq.DB.DbParameterCollectionHelper.Parameters">
+            <summary>
+            获取参数集合
+            </summary>
+        </member>
+        <member name="M:Apq.DB.DbParameterCollectionHelper.#ctor(System.Data.Common.DbParameterCollection)">
+            <summary>
+            DbParameterCollectionHelper
+            </summary>
+            <param name="Parameters"></param>
+        </member>
+        <member name="P:Apq.DB.DbParameterCollectionHelper.Item(System.String)">
+            <summary>
+            获取或设置指定参数名的参数
+            </summary>
+            <param name="ParameterName">参数名</param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.DB.MsSql.CommSQL">
+            <summary>
+            常用的MsSql查询语句
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.CommSQL.ProductMajorVersion">
+            <summary>
+            主版本号
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.CommSQL.ProductMinorVersion">
+            <summary>
+            次版本号
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.CommSQL.ExistsTable">
+            <summary>
+            是否存在指定的表
+            输入参数:@TableName
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.CommSQL.Apq_NewID">
+            <summary>
+            获取自增值(通过序列或配置表,根据版本自动选择)
+            输入参数:@soName, @Count
+            输出参数:@First, @Last, @Inc, @Time
+            依赖项: Apq_NewIDBySO, Apq_NewIDByRow, Apq_CreateSO, Apq_CreateTable_Apq_ID, Apq_ProductMajorVersion
+            </summary>
+        </member>
+        <member name="T:Apq.DB.MsSql.MsSqlType">
+            <summary>
+            MsSql数据库类型枚举
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.bigint">
+            <summary>
+            BigInt
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.binary">
+            <summary>
+            binary
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.bit">
+            <summary>
+            bit
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.char">
+            <summary>
+            char
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.date">
+            <summary>
+            date
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.datetime">
+            <summary>
+            datetime
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.datetime2">
+            <summary>
+            datetime2
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.datetimeoffset">
+            <summary>
+            datetimeoffset
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.decimal">
+            <summary>
+            decimal
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.float">
+            <summary>
+            float
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.geography">
+            <summary>
+            geography
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.geometry">
+            <summary>
+            geometry
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.hierarchyid">
+            <summary>
+            hierarchyid
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.image">
+            <summary>
+            image
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.int">
+            <summary>
+            int
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.money">
+            <summary>
+            money
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.nchar">
+            <summary>
+            nchar
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.ntext">
+            <summary>
+            ntext
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.numeric">
+            <summary>
+            numeric == decimal
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.nvarchar">
+            <summary>
+            nvarchar
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.real">
+            <summary>
+            real == float(24)
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.smalldatetime">
+            <summary>
+            smalldatetime
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.smallint">
+            <summary>
+            smallint
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.smallmoney">
+            <summary>
+            smallmoney
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.sql_variant">
+            <summary>
+            sql_variant
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.sysname">
+            <summary>
+            sysname
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.text">
+            <summary>
+            text
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.time">
+            <summary>
+            time
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.timestamp">
+            <summary>
+            timestamp
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.tinyint">
+            <summary>
+            tinyint
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.uniqueidentifier">
+            <summary>
+            uniqueidentifier
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.varbinary">
+            <summary>
+            varbinary
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.varchar">
+            <summary>
+            varchar
+            </summary>
+        </member>
+        <member name="F:Apq.DB.MsSql.MsSqlType.xml">
+            <summary>
+            xml
+            </summary>
+        </member>
+        <member name="T:Apq.DB.MsSql.MsSqlColumn">
+            <summary>
+            表示MsSql的列定义
+            </summary>
+        </member>
+        <member name="P:Apq.DB.MsSql.MsSqlColumn.ColumnName">
+            <summary>
+            列名
+            </summary>
+        </member>
+        <member name="P:Apq.DB.MsSql.MsSqlColumn.Caption">
+            <summary>
+            标题(一般是指中文标题)
+            </summary>
+        </member>
+        <member name="P:Apq.DB.MsSql.MsSqlColumn.Description">
+            <summary>
+            说明(描述)
+            </summary>
+        </member>
+        <member name="P:Apq.DB.MsSql.MsSqlColumn.MsSqlType">
+            <summary>
+            类型
+            </summary>
+        </member>
+        <member name="P:Apq.DB.MsSql.MsSqlColumn.Length">
+            <summary>
+            长度或精度
+            </summary>
+        </member>
+        <member name="P:Apq.DB.MsSql.MsSqlColumn.Scale">
+            <summary>
+            小数位数
+            </summary>
+        </member>
+        <member name="P:Apq.DB.MsSql.MsSqlColumn.TypeFrom">
+            <summary>
+            类型是根据什么解析出来的{0:未定义,1:Sql列类型,2:C#变量类型,3:默认类型(nvarchar)}
+            </summary>
+        </member>
+        <member name="M:Apq.DB.MsSql.MsSqlColumn.GetMsSqlTypeString">
+            <summary>
+            获取MsSqlType定义的字符串表示。默认为nvarchar(max)
+            </summary>
+        </member>
+        <member name="M:Apq.DB.MsSql.MsSqlColumn.GetColumnDefineString">
+            <summary>
+            获取MsSql的列定义语句
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.DB.MsSql.MsSqlTypeParser.FromName(System.String)">
+            <summary>
+            根据枚举名称字符串解析出枚举实例
+            </summary>
+            <returns>MsSqlType:枚举实例,
+            TypeFrom:类型是根据什么解析出来的{0:未定义,1:Sql列类型,2:C#变量类型}</returns>
+        </member>
+        <member name="M:Apq.DB.SQLite.Meta.CreateDBIfNotExists(System.String)">
+            <summary>
+            若数据库文件不存在,则创建数据库文件
+            </summary>
+            <returns>执行了创建文件时返回true</returns>
+        </member>
+        <member name="M:Apq.DB.SQLite.Meta.CreateTableIfNotExists(System.String,System.String,System.String,System.String)">
+            <summary>
+            建表(可选参数:初始数据)
+            </summary>
+        </member>
+        <member name="T:Apq.Delegates">
+            <summary>
+            代理及其示例方法
+            </summary>
+        </member>
+        <member name="T:Apq.Delegates.SetProperty">
+            <summary>
+            设置 obj 的 PropertyName 属性值为 Value
+            </summary>
+            <param name="obj">对象</param>
+            <param name="PropertyName">属性名</param>
+            <param name="Value">值</param>
+        </member>
+        <member name="M:Apq.Delegates.SetProperty_M(System.Object,System.String,System.Object)">
+            <summary>
+            [反射]设置对象属性
+            </summary>
+            <param name="obj">对象</param>
+            <param name="PropertyName">属性名</param>
+            <param name="Value">值</param>
+        </member>
+        <member name="T:Apq.Easer">
+            <summary>
+            缓动器(进度转换:时间进度=>插值进度)
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.Linear">
+            <summary>
+            线性缓动,匀速运动
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InSine">
+            <summary>
+            正弦加速缓动,开始缓慢,后来加速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutSine">
+            <summary>
+            正弦减速缓动,开始快速,后来减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutSine">
+            <summary>
+            正弦波缓动,先加速后减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InQuad">
+            <summary>
+            二次方加速缓动,开始缓慢,后来加速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutQuad">
+            <summary>
+            二次方减速缓动,开始快速,后来减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutQuad">
+            <summary>
+            二次方波缓动,先加速后减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InCubic">
+            <summary>
+            三次方加速缓动,开始缓慢,后来加速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutCubic">
+            <summary>
+            三次方减速缓动,开始快速,后来减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutCubic">
+            <summary>
+            三次方波缓动,先加速后减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InQuart">
+            <summary>
+            四次方加速缓动,开始缓慢,后来加速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutQuart">
+            <summary>
+            四次方减速缓动,开始快速,后来减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutQuart">
+            <summary>
+            四次方波缓动,先加速后减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InQuint">
+            <summary>
+            五次方加速缓动,开始缓慢,后来加速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutQuint">
+            <summary>
+            五次方减速缓动,开始快速,后来减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutQuint">
+            <summary>
+            五次方波缓动,先加速后减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InExpo">
+            <summary>
+            指数加速缓动,开始缓慢,后来加速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutExpo">
+            <summary>
+            指数减速缓动,开始快速,后来减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutExpo">
+            <summary>
+            指数波缓动,先加速后减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InCirc">
+            <summary>
+            圆形加速缓动,开始缓慢,后来加速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutCirc">
+            <summary>
+            圆形减速缓动,开始快速,后来减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutCirc">
+            <summary>
+            圆形波缓动,先加速后减速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutBack">
+            <summary>
+            先正弦减速后正弦加速缓动,开始快速,后来减速,再加速
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InBack">
+            <summary>
+            回退加速(类似弹簧),开始缓慢,后来加速并回退一定距离,然后减速回弹
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutBack">
+            <summary>
+            回退减速(类似弹簧),开始快速,后来减速并回退一定距离,然后加速回弹
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InBounce">
+            <summary>
+            弹跳加速缓动,开始缓慢,后来加速并反弹
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutBounce">
+            <summary>
+            弹跳减速缓动,开始快速,后来减速并反弹
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutBounce">
+            <summary>
+            弹跳波缓动,先加速后减速并反弹
+            (有可能是死循环,==测试后没问题再去掉这行注释)
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InElastic">
+            <summary>
+            弹性加速缓动,开始缓慢,后来加速并弹性拉伸
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.OutElastic">
+            <summary>
+            弹性减速缓动,开始快速,后来减速并弹性拉伸
+            </summary>
+        </member>
+        <member name="F:Apq.EaseType.InOutElastic">
+            <summary>
+            弹性波缓动,先加速后减速并弹性拉伸
+            </summary>
+        </member>
+        <member name="T:Apq.EF.LoggerProvider">
+            <summary>
+            将EF的日志写入到 EFRolling日志器
+            </summary>
+        </member>
+        <member name="M:Apq.EF.LoggerProvider.Dispose">
+            <summary>
+            覆写为不要释放(为什么???????)
+            </summary>
+        </member>
+        <member name="T:Apq.EF.SqlLogger">
+            <summary>
+            将EF的日志写入到 EFRolling日志器
+            </summary>
+            <param name="categoryName">日志所属类别</param>
+        </member>
+        <member name="M:Apq.EF.SqlLogger.#ctor(System.String)">
+            <summary>
+            将EF的日志写入到 EFRolling日志器
+            </summary>
+            <param name="categoryName">日志所属类别</param>
+        </member>
+        <member name="T:Apq.EnumRow">
+            <summary>
+            表示枚举的一个值
+            </summary>
+        </member>
+        <member name="P:Apq.EnumRow.Name">
+            <summary>
+            枚举名
+            </summary>
+        </member>
+        <member name="P:Apq.EnumRow.Value">
+            <summary>
+            枚举值
+            </summary>
+        </member>
+        <member name="P:Apq.EnumRow.Description">
+            <summary>
+            附加描述
+            </summary>
+        </member>
+        <member name="T:Apq.EnumVisitor`1">
+            <summary>
+            枚举遍历器
+            </summary>
+            <typeparam name="T">枚举类型</typeparam>
+        </member>
+        <member name="M:Apq.EnumVisitor`1.AsEnumerable">
+            <summary>
+            返回类型为 IEnumerable&lt;T&gt; 的输入。
+            </summary>
+            <returns>类型为 IEnumerable&lt;T&gt; 的序列。</returns>
+        </member>
+        <member name="M:Apq.EnumVisitor`1.GetEnumerator">
+            <summary>
+            返回一个循环访问集合的枚举数。
+            </summary>
+            <returns>可用于循环访问集合的 IEnumerator 。</returns>
+        </member>
+        <member name="M:Apq.EnumVisitor`1.System#Collections#IEnumerable#GetEnumerator">
+            <summary>
+            返回一个循环访问集合的枚举数。
+            </summary>
+            <returns>可用于循环访问集合的 IEnumerator 。</returns>
+        </member>
+        <member name="M:Apq.EnumVisitor`1.ToDataTable">
+            <summary>
+            以三列DataTable(Name,Value{long},Description)输出枚举的所有值
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.EnumVisitor`1.ToList">
+            <summary>
+            以EnumRow(Name,Value{long},Description)的列表输出枚举的所有值
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.EventArgsBase">
+            <summary>
+            事件参数基础类
+            </summary>
+        </member>
+        <member name="P:Apq.EventArgsBase.PIns">
+            <summary>
+            输出参数列表
+            </summary>
+        </member>
+        <member name="M:Apq.EventArgsBase.SetItem(System.Int32,System.Object)">
+            <summary>
+            设置指定索引位置的值
+            </summary>
+        </member>
+        <member name="T:Apq.EventArgsText">
+            <summary>
+            事件参数第一项为字符串
+            </summary>
+        </member>
+        <member name="P:Apq.EventArgsText.Text">
+            <summary>
+            获取或设置事件关联的字符串
+            </summary>
+        </member>
+        <member name="T:Apq.EventArgsIndex">
+            <summary>
+            事件参数第一项为索引位置,第二项指示是否选中
+            </summary>
+        </member>
+        <member name="P:Apq.EventArgsIndex.Index">
+            <summary>
+            获取或设置事件关联的索引位置(-2表示未初始化)
+            </summary>
+        </member>
+        <member name="T:Apq.ExceptionWraper">
+            <summary>
+            异常封装
+            </summary>
+        </member>
+        <member name="M:Apq.ExceptionWraper.GetOriginalException(System.Exception)">
+            <summary>
+            获取原始异常
+            </summary>
+            <param name="ex"></param>
+        </member>
+        <member name="M:Apq.ExceptionWraper.GetMessageList(System.Exception,System.Boolean)">
+            <summary>
+            获取信息列表
+            </summary>
+            <param name="ex"></param>
+            <param name="ContainsStack">是否在异常信息后附上调用堆栈</param>
+        </member>
+        <member name="M:Apq.ExceptionWraper.#ctor(System.Exception)">
+            <summary>
+            Exception
+            </summary>
+            <param name="ex"></param>
+        </member>
+        <member name="P:Apq.ExceptionWraper.Ex">
+            <summary>
+            获取异常对象
+            </summary>
+        </member>
+        <member name="P:Apq.ExceptionWraper.Level">
+            <summary>
+            获取或设置异常级别
+            </summary>
+        </member>
+        <member name="P:Apq.ExceptionWraper.OriginalException">
+            <summary>
+            获取原始异常
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.ExceptionWraper.GetMessageList(System.Boolean)">
+            <summary>
+            获取信息列表
+            </summary>
+            <param name="ContainsStack">是否在异常信息后附上调用堆栈</param>
+        </member>
+        <member name="T:Apq.Extension.Ext_DataSet">
+            <summary>
+            System.Data中类的基本扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetDataSetColNames(System.Data.Common.DataColumnMappingCollection)">
+            <summary>
+            获取 DataSet 列名集合
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetSourceColNames(System.Data.Common.DataColumnMappingCollection)">
+            <summary>
+            获取 Source 列名集合
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.LikeDBNull(System.Data.DataRow)">
+            <summary>
+            返回一行是否全与 DBNull 具有相似意义
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.EqualsTo(System.Data.DataRow,System.Data.DataRow,System.Boolean)">
+            <summary>
+            [反射]判断两行是否相等
+            </summary>
+            <param name="dr1"></param>
+            <param name="dr2"></param>
+            <param name="ContainsAutoID">是否比较自增列的值</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ToDynamic(System.Data.DataRow,System.Boolean,System.Boolean)">
+            <summary>
+            转为动态类型(没有进行深复制,多用于实体转换)
+            </summary>
+            <remarks>
+            浅复制,无类型转换
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetPrimaryValues(System.Data.DataRow)">
+            <summary>
+            获取主键值
+            </summary>
+            <param name="dr"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.SetValues(System.Data.DataRow,System.Object[])">
+            <summary>
+            按顺序给行赋值
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.CopytoNonPrimary(System.Data.DataRow,System.Data.DataRow,System.Collections.Generic.IList{System.String})">
+            <summary>
+            从另一行中“粘贴”数据到当前行(不复制主键) 对每一列,优先使用Clone方法,不支持则直接赋值
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.Copyto(System.Data.DataRow,System.Data.DataRow,System.Collections.Generic.IList{System.String})">
+            <summary>
+            复制表中的行 对每一列,优先使用Clone方法,不支持则直接赋值
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.WritePropertiesToDR(System.Object,System.Data.DataRow)">
+            <summary>
+            [反射]将可读属性写入到DataRow中已存在的对应列
+            </summary>
+            <remarks>
+            浅复制,无类型转换
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ReadPropertiesFromDR(System.Object,System.Data.DataRow)">
+            <summary>
+            [反射]从DataRow中加载存在的可写属性
+            </summary>
+            <remarks>
+            浅复制,通用类型转换
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.WriteToXE(System.Data.DataRow,System.Collections.Generic.IList{System.String},System.Xml.XmlElement)">
+            <summary>
+            将行写入Xml节点的(属性)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ReadFromXE(System.Data.DataRow,System.Collections.Generic.IList{System.String},System.Xml.XmlElement)">
+            <summary>
+            从 XmlElement 加载行
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ToXmlString(System.Data.DataRow)">
+            <summary>
+            将行转换为Xml字符串
+            </summary>
+            <param name="dr"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetColNames(System.Data.DataTable)">
+            <summary>
+            获取所有列名
+            </summary>
+            <param name="dt">表</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetColNamesPrimary(System.Data.DataTable)">
+            <summary>
+            获取主键列名
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetColNamesNonPrimary(System.Data.DataTable)">
+            <summary>
+            获取非主键列
+            </summary>
+            <param name="dt"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.SetDist(System.Data.DataTable,System.Int32,System.String)">
+            <summary>
+            用给定值设置每一行的分布式结果列(按需自动添加分布式结果列)
+            </summary>
+            <remarks>
+            多用于分布式查询结果集的第一步处理
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.CreateDefaultTableMapping(System.Data.DataTable)">
+            <summary>
+            生成默认映射表
+            </summary>
+            <param name="dt">表</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetDistinct(System.Data.DataTable,System.String[])">
+            <summary>
+            获取不重复列表
+            </summary>
+            <param name="dv">源表</param>
+            <param name="Columns">列名列表</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.CloneToStringTable(System.Data.DataTable)">
+            <summary>
+            创建一个与源表 列名相同,列类型为字符串 的空表
+            </summary>
+            <param name="dtSrc">源表</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ExportToText(System.Data.DataTable,System.String,System.String,System.String,System.Boolean)">
+            <summary>
+            导出到文本文件
+            </summary>
+            <param name="dt">表</param>
+            <param name="FileName"></param>
+            <param name="strColSpliter">列分隔符</param>
+            <param name="strRowSpliter">行分隔符</param>
+            <param name="ContainsColName">是否包含列名</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ToDynamicObservableCollection(System.Data.DataTable)">
+            <summary>
+            转换为ObservableCollection,子项为dynamic类型
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ToObservableCollection``1(System.Data.DataTable)">
+            <summary>  
+            [反射]转换为ObservableCollection
+            </summary>  
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.MergeObservableCollection``1(System.Data.DataTable,System.Collections.ObjectModel.ObservableCollection{``0})">
+            <summary>
+            将ObservableCollection合并到表中
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.MergeBoth(System.Data.DataTable,System.Data.DataTable)">
+            <summary>
+            双向合并(表名相同)
+            同名列合并,缺失列设为DBNull
+            </summary>
+            <returns>合并结果表</returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ContainsRow(System.Data.DataTable,System.Data.DataRow,System.Data.DataRow@,System.Boolean)">
+            <summary>
+            返回表里是否已包含具有指定行值的行。包含时输出找到的等值行。
+            </summary>
+            <param name="dt"></param>
+            <param name="dr"></param>
+            <param name="drFind">输出等值行,不包含时输出为null</param>
+            <param name="CompareAutoID">是否比较自增列</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetRootRows(System.Data.DataTable,System.String,System.String)">
+            <summary>
+            获取根行
+            </summary>
+            <param name="dt">表</param>
+            <param name="Key">主键列名(单列)</param>
+            <param name="Parent">上级列名(单列)</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.WriteToTreeXE(System.Data.DataTable,System.Collections.Generic.IList{System.String},System.String,System.String,System.Xml.XmlElement,System.String,System.String)">
+            <summary>
+            写入到 XmlElement(树)
+            </summary>
+            <param name="dt">表</param>
+            <param name="Columns">需要的列名列表</param>
+            <param name="Key">主键列名(单列)</param>
+            <param name="Parent">上级列名(单列)</param>
+            <param name="xnVRoot">xnVRoot</param>
+            <param name="tag">结点名</param>
+            <param name="RootsFilter">根行筛选</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ReadFromTreeXE(System.Data.DataTable,System.Collections.Generic.IList{System.String},System.String,System.String,System.Xml.XmlElement)">
+            <summary>
+            从 XmlElement(树) 加载表
+            </summary>
+            <param name="dt">表</param>
+            <param name="Columns">需要的列名列表</param>
+            <param name="Key">主键列名(一列)</param>
+            <param name="Parent">上级列名(一列)</param>
+            <param name="xeVRoot">xnVRoot</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.CreateDefaultMapping(System.Data.DataSet)">
+            <summary>
+            创建默认表列映射
+            </summary>
+            <param name="ds"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.BuildupTabelForMaxrow(System.Data.DataSet,System.Int32)">
+            <summary>
+            按最大行数限制组织表(新建表,转移数据,新表名为原表名+"-"+编号)
+            </summary>
+            <param name="ds"></param>
+            <param name="Maxrow">每个表最大行数</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ExportToText(System.Data.DataSet,System.String,System.String,System.String,System.Boolean)">
+            <summary>
+            [追加]导出指定表到文本文件
+            </summary>
+            <param name="ds"></param>
+            <param name="FileName"></param>
+            <param name="strColSpliter">列分隔符</param>
+            <param name="strRowSpliter">行分隔符</param>
+            <param name="ContainsColName">是否包含列名</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.MergeBoth(System.Data.DataSet,System.Data.DataSet)">
+            <summary>
+            双向合并
+            同名表进行合并,不存在则复制到输出中
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetColNames(System.Data.DataView)">
+            <summary>
+            获取所有列名
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetColNamesPrimary(System.Data.DataView)">
+            <summary>
+            获取主键列名
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetColNamesNonPrimary(System.Data.DataView)">
+            <summary>
+            获取非主键列
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.SetDist(System.Data.DataView,System.Int32,System.String)">
+            <summary>
+            用给定值设置每一行的分布式结果列(按需自动添加分布式结果列)
+            </summary>
+            <remarks>
+            多用于分布式查询结果集的第一步处理
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.GetDistinct(System.Data.DataView,System.String[])">
+            <summary>
+            获取不重复列表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.CloneToStringTable(System.Data.DataView)">
+            <summary>
+            创建一个与源表 列名相同,列类型为字符串 的空表
+            </summary>
+            <param name="dv">源表</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ExportToText(System.Data.DataView,System.String,System.String,System.String,System.Boolean)">
+            <summary>
+            导出到文本文件
+            </summary>
+            <param name="dv">表</param>
+            <param name="FileName"></param>
+            <param name="strColSpliter">列分隔符</param>
+            <param name="strRowSpliter">行分隔符</param>
+            <param name="ContainsColName">是否包含列名</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.ToObservableCollection``1(System.Data.DataView)">
+            <summary>  
+            [反射]转换为ObservableCollection
+            </summary>  
+        </member>
+        <member name="M:Apq.Extension.Ext_DataSet.FindRows(System.Data.DataView,System.String)">
+            <summary>
+            返回满足条件的行列表(在DataView上再次过滤)
+            </summary>
+        </member>
+        <member name="T:Apq.Extension.Ext_DateTime">
+            <summary>
+            DateTime扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DateTime.GetCppDateTime(System.DateTime,System.TimeZoneInfo)">
+            <summary>
+            获取对应的C++时间(数值)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DateTime.ToDateTimeFromCppDateTime(System.Double,System.TimeZoneInfo)">
+            <summary>
+            按C++时间(数值)获取对应的C#时间(DateTime)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ConvertToCSType(System.Data.DbType)">
+            <summary>
+            其中:DbType ==&gt; CS
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ConvertToDbType(System.Type)">
+            <summary>
+            其中:CS ==&gt; DbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.MaybeSqlInjection(System.String)">
+            <summary>
+            判断SQL注入的可能性
+            </summary>
+            <param name="me">应该是从不可信任来源传入的字符串(比如:客户端)</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.EraseSqlInjection(System.String,System.Boolean,System.Boolean)">
+            <summary>
+            去掉可能是SQL注入的字符
+            </summary>
+            <param name="me">应该是从不可信任来源传入的字符串(比如:客户端)</param>
+            <param name="RemoveNewLine">是否移除换行(\r和\n)</param>
+            <param name="RemoveWhiteSpaces">是否移除所有空白字符</param>
+            <remarks>默认替换字符串中的'为两个''、去掉单行GO、去掉分号</remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.AsNameInMsSql(System.String)">
+            <summary>
+            防注入并转为MsSql的合法名称(替换字符串中的'为两个''、去掉单行GO、去掉分号、去掉回车换行、去掉空)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ConvertToSqlON(System.ValueType,System.Data.DbType)">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <param name="DbT">已支持类型受限于下级方法实现</param>
+            <param name="me"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ConvertToSqlON(System.Data.DataRow)">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ConvertToSqlON(System.String,System.Data.DbType)">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <param name="DbT">{Char,DateTime,NChar,NText,NVarChar,SmallDateTime,Text,UniqueIdentifier,VarChar}</param>
+            <param name="me"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ConvertToSqlON(System.Object)">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ConvertToSqlON(System.Object,System.Data.DbType)">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <param name="DbT">已支持类型受限于下级方法实现</param>
+            <param name="me"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ConvertToSqlON(System.Data.DbType,System.Byte[])">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <param name="DbT">{Binary,Bit,Image,Variant,UniqueIdentifier}</param>
+            <param name="ary"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.GuessDbType(System.String)">
+            <summary>
+            根据SqlON串,解析出对应的DbType(猜测)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.TryParseSqlON(System.String,System.Object@)">
+            <summary>
+            解析 SqlON 对象
+            </summary>
+            <param name="rtn">解析出来的结果</param>
+            <param name="me">来源 SqlON 字符串</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ExportSql(System.Object[])">
+            <summary>
+            导出行语句(不含括号)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ExportSql(System.Data.DataRow)">
+            <summary>
+            导出行语句(不含括号)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ExportSql(System.Data.DataTable,System.String,System.Boolean)">
+            <summary>
+            导出行语句(含括号)
+            </summary>
+            <param name="me"></param>
+            <param name="Insert">给定“INSERT INTO table_name(colList) VALUES”</param>
+            <param name="IsBatch">输出语句是否为批量添加(速度快)</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.AddParameter(System.Data.Common.DbCommand,System.Data.Common.DbParameter)">
+            <summary>
+            [覆盖添加]添加参数
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.AddParameter(System.Data.Common.DbCommand,System.String,System.Object)">
+            <summary>
+            [覆盖添加]添加参数
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.AddParameter(System.Data.Common.DbCommand,System.String,System.Object,System.Data.DbType)">
+            <summary>
+            [覆盖添加]添加参数
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.AddParameter(System.Data.Common.DbCommand,System.String,System.Object,System.Data.DbType,System.Int32)">
+            <summary>
+            [覆盖添加]添加参数
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.Open_Ensure(System.Data.Common.DbConnection)">
+            <summary>
+            [可重入]打开连接
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.Close_Ensure(System.Data.Common.DbConnection)">
+            <summary>
+            [可重入]关闭连接
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.CreateAdapter(System.Data.Common.DbConnection,System.String)">
+            <summary>
+            [反射]创建 DataAdapter
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.ExecuteCount(System.Data.Common.DbConnection,System.String,System.String)">
+            <summary>
+            从数据库查询单表总条数
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.CreateCommand(System.Data.Common.DbDataAdapter,System.String)">
+            <summary>
+            [反射]创建 DbCommand
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_DB.AddParameter(System.Data.Common.DbCommand,System.Boolean,System.String,System.String,System.Data.DataRowVersion,System.Data.DbType,System.Data.ParameterDirection,System.Int32,System.Byte,System.Byte)">
+            <summary>
+            给DbCommand添加参数
+            </summary>
+            <param name="me"></param>
+            <param name="SourceColumnNullMapping">数据库是否允许为空</param>
+            <param name="ParameterName">参数名</param>
+            <param name="SourceColumn">对应的DataTable中的列名</param>
+            <param name="SourceVersion">从DataRow中取值时,取哪个版本的值</param>
+            <param name="DbType">数据库中的数据类型</param>
+            <param name="Size">数据库中数据类型的大小(长度)</param>
+            <param name="Precision">数据库中数据类型的精度</param>
+            <param name="Scale">数据库中数据类型的小数位数</param>
+            <param name="Direction">参数方向(Input/Output)</param>
+        </member>
+        <member name="P:Apq.Extension.DBBase.NonSupportedInType">
+            <summary>
+            对于不支持的来源类型返回的默认值
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DBBase.NonSupportedOutType">
+            <summary>
+            对于不支持的目标类型返回的默认值
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DBBase.htDbToCS">
+            <summary>
+            获取数据库类型与C#类型的对应表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DBBase.GetCSType(System.Data.DbType)">
+            <summary>
+            获取数据库类型对应的C#类型
+            </summary>
+            <param name="sdt"></param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.Extension.DBBase.htCSToDb">
+            <summary>
+            获取C#类型与数据库类型的对应表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DBBase.GetDbType(System.Type)">
+            <summary>
+            获取C#类型对应的数据库类型
+            </summary>
+            <param name="t"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.Extension.Ext_Delegate">
+            <summary>
+            在全局变量中保存已暂停的代理,可用于触发事件前判断。
+            并不能改变代理和事件的默认功能。需要在事件处理代理中进行判断,已暂停则不处理了。
+            </summary>
+        </member>
+        <member name="F:Apq.Extension.Ext_Delegate.m_EventSuspend">
+            <summary>
+            表示已暂停处理的代理
+            </summary>
+        </member>
+        <member name="T:Apq.Extension.Ext_Dictionary">
+            <summary>
+            Dictionary扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Dictionary.Set``2(System.Collections.Generic.Dictionary{``0,``1},``0,``1)">
+            <summary>
+            添加/修改
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Dictionary.ToDynamic``1(System.Collections.Generic.IDictionary{System.String,``0},System.Boolean,System.Boolean)">
+            <summary>
+            转为动态类型
+            </summary>
+            <remarks>
+            浅复制,无类型转换
+            </remarks>
+        </member>
+        <member name="T:Apq.Extension.Ext_EF">
+            <summary>
+            EF的扩展方法
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_EF.ExecuteSqlCommand(System.Data.Entity.Database,System.Collections.Generic.IList{System.Tuple{System.String,System.Data.Common.DbParameter[]}})">
+            <summary>
+            执行多条sql语句
+            </summary>
+        </member>
+        <member name="T:Apq.Extension.Ext_Enum">
+            <summary>
+            枚举扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Enum.GetName(System.Enum)">
+            <summary>
+            获取枚举名称
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Enum.ParseName``1(System.String)">
+            <summary>
+            根据名称获取指定类型的枚举实例
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Enum.GetValue(System.String,System.String,System.Reflection.Assembly)">
+            <summary>
+            根据枚举类型和枚举名称获取指定类型的枚举值
+            </summary>
+            <returns>返回null表示未找到枚举名称</returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_Enum.GetDescription(System.Enum,System.Boolean)">
+            <summary>
+            获取枚举描述(DescriptionAttribute)
+            </summary>
+            <param name="eff">枚举值</param>
+            <param name="orName">未定义描述时使用名称代替</param>
+        </member>
+        <member name="T:Apq.Extension.Ext_EventSuspend">
+            <summary>
+            EventSuspend扩展
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.Ext_EventSuspend.EventSuspend">
+            <summary>
+            保存已暂停的事件(用对象和成员名称指定)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_EventSuspend.Contains(Apq.Collections.IListWapper{Apq.CSMember},System.Object,System.String)">
+            <summary>
+            此扩展将包含判断扩展为两次,1 按指定名称 2 使用空名称,只要有一次判断为true,则返回true,否则为false
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_EventSuspend.Add(Apq.Collections.IListWapper{Apq.CSMember},System.Object,System.String)">
+            <summary>
+            添加
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_EventSuspend.Remove(Apq.Collections.IListWapper{Apq.CSMember},System.Object,System.String)">
+            <summary>
+            移除子项。没有找到 item,该方法也会返回 false
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_ExpandoObject.ContainsInTree(System.Dynamic.ExpandoObject,System.String)">
+            <summary>
+            ExpandoObject树结构中是否存在指定属性
+            </summary>
+            <param name="expando"></param>
+            <param name="propertyName">属性名。可以包含"."进行下层访问。</param>
+            <returns>如果包含".",则必须所有层级的属性都存在才是true</returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_ExpandoObject.GetInTree(System.Dynamic.ExpandoObject,System.String)">
+            <summary>
+            从ExpandoObject树结构中读取属性值
+            </summary>
+            <param name="expando"></param>
+            <param name="propertyName">属性名。可以包含"."进行下层访问。</param>
+            <returns>不存在此属性时返回null</returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_ExpandoObject.SetInTree(System.Dynamic.ExpandoObject,System.String,System.Object)">
+            <summary>
+            在ExpandoObject树结构中设置属性值
+            </summary>
+            <param name="expando"></param>
+            <param name="propertyName">属性名。可以包含"."进行下层访问。</param>
+            <param name="value">属性值</param>
+        </member>
+        <member name="T:Apq.Extension.Ext_ICollection">
+            <summary>
+            ICollection&lt;T&gt;扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_ICollection.Reset``2(System.Collections.Generic.ICollection{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``1,``0})">
+            <summary>
+            用另一个集合重置当前集合。
+            </summary>
+            <typeparam name="T">目标类型</typeparam>
+            <typeparam name="TSrc">来源类型</typeparam>
+            <param name="lst">当前集合</param>
+            <param name="list">来源集合</param>
+            <param name="create">提供创建目标类型对象的方法</param>
+        </member>
+        <member name="T:Apq.Extension.Ext_IEnumerable">
+            <summary>
+            IEnumerable扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IEnumerable.Contains(System.Collections.IEnumerable,System.Object)">
+            <summary>
+            返回列表中是否包含指定项(支持null)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IEnumerable.GetRootItemType(System.Collections.IEnumerable)">
+            <summary>
+            获取所有子项(item)的根类(可以使用该类型引用指向任一子项)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IEnumerable.CopyToDataTable(System.Collections.IEnumerable,System.Data.DataTable)">
+            <summary>
+            复制数据到DataTable中(仅添加,会自动补全所有可读属性的列)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IEnumerable.ConvertToDataTable(System.Collections.IEnumerable)">
+            <summary>
+            转换为DataTable
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IEnumerable.ToFixedList``1(System.Collections.Generic.IEnumerable{``0},System.Int32)">
+            <summary>
+            转为指定长度的倍数长度的列表,长度不足时尾部补默认值
+            </summary>
+            <remarks>主要用于字节数组</remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_IEnumerable.Map``2(System.Collections.Generic.IEnumerable{``0},System.Converter{``0,``1})">
+            <summary>
+            用指定类型转换方法,对每一项进行类型转换,返回新的列表(模仿jQuery,不包含转换结果为null的项)
+            </summary>
+        </member>
+        <member name="T:Apq.Extension.Ext_IList">
+            <summary>
+            List类基本扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IList.AddUnique(System.Collections.IList,System.Object)">
+            <summary>
+            将某项添加到 System.Collections.Generic.IList 中,该项唯一。
+            </summary>
+            <returns>新项的插入位置。</returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_IList.IndexOf_ByCycle``1(System.Collections.Generic.IList{``0},System.Int32)">
+            <summary>
+            按循环索引获取子项
+            </summary>
+        </member>
+        <member name="T:Apq.Extension.Ext_JsonSerializeClone">
+            <summary>
+            通过JSON序列化和反序列化实现的深复制
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_JsonSerializeClone.JsonSerializeClone``1(``0)">
+            <summary>
+            通过序列化实现的深复制(要求类已标记为可序列化)
+            </summary>
+        </member>
+        <member name="T:Apq.Extension.Ext_MsSql">
+            <summary>
+            用于MsSql的扩展方法
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToSqlDbType(System.Data.DbType)">
+            <summary>
+            DbType ==&gt; SqlDbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToDbType(System.Data.SqlDbType)">
+            <summary>
+            SqlDbType ==&gt; DbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToCSType(System.Data.SqlDbType)">
+            <summary>
+            SqlDbType ==&gt; CS
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToSqlDbType(System.Type)">
+            <summary>
+            CS ==&gt; SqlDbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToMsSqlON(System.ValueType,System.Data.SqlDbType)">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <param name="sdt">已支持类型受限于下级方法实现</param>
+            <param name="me"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToMsSqlON(System.Data.DataRow)">
+            <summary>
+            转换为SqlON串
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToMsSqlON(System.String,System.Data.SqlDbType)">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <param name="sdt">{Char,DateTime,NChar,NText,NVarChar,SmallDateTime,Text,UniqueIdentifier,VarChar}</param>
+            <param name="me"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToMsSqlON(System.Object)">
+            <summary>
+            转换为SqlON串
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToMsSqlON(System.Object,System.Data.SqlDbType)">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <param name="sdt">已支持类型受限于下级方法实现</param>
+            <param name="me"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.ConvertToMsSqlON(System.Data.SqlDbType,System.Byte[])">
+            <summary>
+            转换为SqlON串
+            </summary>
+            <param name="sdt">{Binary,Bit,Image,Variant,UniqueIdentifier}</param>
+            <param name="ary"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.GuessSqlDbType(System.String)">
+            <summary>
+            根据SqlON串,解析出对应的SqlDbType(猜测)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.TryParseMsSqlON(System.String,System.Object@)">
+            <summary>
+            解析 SqlON 对象
+            </summary>
+            <param name="rtn">解析出来的结果</param>
+            <param name="me">来源 SqlON 字符串</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_MsSql.CreateMsSqlConnection(System.String,System.Int32,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            创建MsSql连接对象
+            </summary>
+            <param name="Server"></param>
+            <param name="Port"></param>
+            <param name="Uid"></param>
+            <param name="Pwd"></param>
+            <param name="dbName"></param>
+            <param name="Option"></param>
+            <param name="AppName">客户端程序名称</param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.Extension.DB_MsSql.htSqlToDb">
+            <summary>
+            获取SqlDbType ==&gt; DbType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MsSql.GetDbType(System.Data.SqlDbType)">
+            <summary>
+            获取获取SqlDbType对应的DbType
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_MsSql.htDbToSql">
+            <summary>
+            获取DbType ==&gt; SqlDbType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MsSql.GetSqlDbType(System.Data.DbType)">
+            <summary>
+            获取DbType对应的SqlDbType
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_MsSql.htSqlToCS">
+            <summary>
+            获取SqlDbType ==&gt; C#类型 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MsSql.GetCSType(System.Data.SqlDbType)">
+            <summary>
+            获取SqlDbType对应的C#类型
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_MsSql.htCSToSql">
+            <summary>
+            获取C#类型 ==&gt; SqlDbType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MsSql.GetSqlDbType(System.Type)">
+            <summary>
+            获取C#类型对应的SqlDbType
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_MsSql.htMsSqlToCS">
+            <summary>
+            获取SqlDbType ==&gt; C#类型 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MsSql.GetCSType(Apq.DB.MsSql.MsSqlType)">
+            <summary>
+            获取MsSqlType对应的C#类型
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_MsSql.htCSToMsSql">
+            <summary>
+            获取C#类型 ==&gt; MsSqlType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MsSql.GetMsSqlType(System.Type)">
+            <summary>
+            获取C#类型对应的MsSqlType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MySql.ConvertToMySqlDbType(System.Data.DbType)">
+            <summary>
+            DbType ==&gt; MySqlDbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MySql.ConvertToDbType(MySql.Data.MySqlClient.MySqlDbType)">
+            <summary>
+            MySqlDbType ==&gt; DbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MySql.ConvertToCSType(MySql.Data.MySqlClient.MySqlDbType)">
+            <summary>
+            MySqlDbType ==&gt; CS
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_MySql.ConvertToMySqlDbType(System.Type)">
+            <summary>
+            CS ==&gt; MySqlDbType
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_MySql.htMySqlToDb">
+            <summary>
+            获取MySqlDbType ==&gt; DbType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MySql.GetDbType(MySql.Data.MySqlClient.MySqlDbType)">
+            <summary>
+            获取获取MySqlDbType对应的DbType
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_MySql.htDbToMySql">
+            <summary>
+            获取DbType ==&gt; MySqlDbType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MySql.GetMySqlDbType(System.Data.DbType)">
+            <summary>
+            获取DbType对应的MySqlDbType
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_MySql.htMySqlToCS">
+            <summary>
+            获取MySql数据库类型与C#类型的对应表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MySql.GetCSType(MySql.Data.MySqlClient.MySqlDbType)">
+            <summary>
+            获取数据库类型对应的C#类型
+            </summary>
+            <param name="mdt"></param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.Extension.DB_MySql.htCSToMySql">
+            <summary>
+            获取C#类型与MySql数据库类型的对应表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_MySql.GetMySqlDbType(System.Type)">
+            <summary>
+            获取C#类型对应的MySql数据库类型
+            </summary>
+            <param name="t"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.Extension.Ext_NameValueCollection">
+            <summary>
+            NameValueCollection扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_NameValueCollection.ToDynamic(System.Collections.Specialized.NameValueCollection,System.Boolean,System.Boolean)">
+            <summary>
+            转为动态类型
+            </summary>
+            <remarks>
+            浅复制,无类型转换
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_NameValueCollection.ToPostContent(System.Collections.Specialized.NameValueCollection,System.Text.Encoding,System.Boolean,System.Boolean)">
+            <summary>
+            转为字节数组(用于Post)
+            </summary>
+        </member>
+        <member name="T:Apq.Extension.Ext_Object">
+            <summary>
+            [反射]System.Object的基础扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.LikeDBNull(System.Object)">
+            <summary>
+            返回指定对象是否与 DBNull 具有相似意义[仿JScrip]{null,DBNull,string.Empty}
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.IsNull(System.Object)">
+            <summary>
+            返回指定对象是否为null{null,DBNull}
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.IsNull_Cast(System.Object,System.Type)">
+            <summary>
+            返回指定对象转换为目标类型时是否应视为null{null,DBNull}
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.HasMean(System.Object)">
+            <summary>
+            返回指定对象是否有意义,不为{null,DBNull,string.Empty,false}
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.SetPropertyValue(System.Object,System.String,System.Object)">
+            <summary>
+            [反射]设置对象中指定属性的值
+            </summary>
+            <remarks>
+            浅复制,无类型转换
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.GetPropertyValue(System.Object,System.String)">
+            <summary>
+            [反射]获取对象中指定属性的值
+            </summary>
+            <remarks>
+            浅复制,无类型转换
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.GetPropertyValues(System.Object,System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            [反射]获取对象中指定属性的值(数组)
+            </summary>
+            <remarks>
+            浅复制,无类型转换
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.ToString_Fast(System.Object,System.String)">
+            <summary>
+            快速转换为字符串(支持类型有限)
+            </summary>
+            <param name="obj">原始对象</param>
+            <param name="failedString">转换失败时返回此参数值</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_Object.ToDynamic(System.Object,System.Boolean,System.Boolean)">
+            <summary>
+            转为动态类型[主要用于匿名对象](只取属性,没有进行深复制,多用于实体转换)
+            </summary>
+            <remarks>
+            浅复制,无类型转换
+            </remarks>
+        </member>
+        <member name="T:Apq.Extension.Ext_ObservableCollection">
+            <summary>
+            ObservableCollection泛型集合基本扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_ObservableCollection.Sort``1(System.Collections.ObjectModel.ObservableCollection{``0})">
+            <summary>
+            默认排序
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_ObservableCollection.Sort``1(System.Collections.ObjectModel.ObservableCollection{``0},System.Collections.Generic.IComparer{``0})">
+            <summary>
+            按指定比较方法排序
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Oracle.ConvertToOracleDbType(System.Data.DbType)">
+            <summary>
+            DbType ==&gt; OracleDbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Oracle.ConvertToDbType(Oracle.ManagedDataAccess.Client.OracleDbType)">
+            <summary>
+            OracleDbType ==&gt; DbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Oracle.ConvertToCSType(Oracle.ManagedDataAccess.Client.OracleDbType)">
+            <summary>
+            OracleDbType ==&gt; CS
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Oracle.ConvertToOracleDbType(System.Type)">
+            <summary>
+            CS ==&gt; OracleDbType
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Oracle.CreateOracleConnection(System.String,System.Int32,System.String,System.String,System.String)">
+            <summary>
+            创建Oracle连接对象
+            </summary>
+            <param name="Server"></param>
+            <param name="Port"></param>
+            <param name="Uid"></param>
+            <param name="Pwd"></param>
+            <param name="dbName"></param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.Extension.DB_Oracle.htOracleToDb">
+            <summary>
+            OracleDbType ==&gt; DbType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_Oracle.GetDbType(Oracle.ManagedDataAccess.Client.OracleDbType)">
+            <summary>
+            获取获取OracleDbType对应的DbType
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_Oracle.htDbToOracle">
+            <summary>
+            获取DbType ==&gt; OracleDbType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_Oracle.GetOracleDbType(System.Data.DbType)">
+            <summary>
+            获取DbType对应的OracleDbType
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_Oracle.htOracleToCS">
+            <summary>
+            获取OracleDbType ==&gt; C#类型 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_Oracle.GetCSType(Oracle.ManagedDataAccess.Client.OracleDbType)">
+            <summary>
+            获取OracleDbType对应的C#类型
+            </summary>
+        </member>
+        <member name="P:Apq.Extension.DB_Oracle.htCSToOracle">
+            <summary>
+            获取C#类型 ==&gt; OracleDbType 的映射表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.DB_Oracle.GetOracleDbType(System.Type)">
+            <summary>
+            获取C#类型对应的OracleDbType
+            </summary>
+        </member>
+        <member name="T:Apq.Extension.Ext_Reflection">
+            <summary>
+            反射扩展
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.IsAnonymous(System.Reflection.MemberInfo)">
+            <summary>
+            是否为匿名代码(如:匿名类、Lambda块)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetFriendlyName(System.Reflection.MemberInfo)">
+            <summary>
+            获取友好名称
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.IsCompilerGenerated(System.Type)">
+            <summary>
+            是否由编译器自动生成
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetClassDeclare(System.Type)">
+            <summary>
+            获取类的定义
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetNameSpace(System.Type)">
+            <summary>
+            获取类的命名空间
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetClassNameSelf(System.Type)">
+            <summary>
+            获取类自己的名称(不含嵌套类的上级类名)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetClassName(System.Type)">
+            <summary>
+            获取类名(嵌套类包含上级类名)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.IsCompilerGenerated(System.Reflection.MethodBase)">
+            <summary>
+            是否由编译器自动生成
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetMethodNameDeclare(System.Reflection.MethodBase)">
+            <summary>
+            获取方法定义所在的类和方法名(不含泛型的形参列表)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetMethodName(System.Reflection.MethodBase)">
+            <summary>
+            获取方法定义所在的命名空间、类名和方法名
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetDelegateReturnType(System.Type)">
+            <summary>
+            获取委托的返回类型
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetDelegateParameterTypes(System.Type)">
+            <summary>
+            获取委托的参数类型列表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.FomatNameForCSV(System.String)">
+            <summary>
+            将名称中的英文逗号换为中文逗号
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetAllFields(System.Type,System.Reflection.BindingFlags,System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            获取继承层次中的所有字段
+            </summary>
+            <param name="me">当前类型</param>
+            <param name="flags">标志</param>
+            <param name="names">字段名范围</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_Reflection.GetAllProperties(System.Type,System.Reflection.BindingFlags,System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            获取继承层次中的所有属性
+            </summary>
+            <param name="me">当前类型</param>
+            <param name="flags">标志</param>
+            <param name="names">字段名范围</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_Stream.SaveToFile(System.IO.Stream,System.String)">
+            <summary>
+            将流写成文件(如何文件已存在,则覆盖)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.RemoveWhiteSpaces(System.String)">
+            <summary>
+            移除所有空白或不可见字符
+            </summary>
+            <param name="me"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.IndexOf(System.String,System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            查找所有子串出现的位置
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.Repeate(System.String,System.Int32)">
+            <summary>
+            字符串重复count次(0次就是string.Empty)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.GetRange(System.String,System.Int32,System.Int32)">
+            <summary>
+            按索引范围取子串[idxBegin,idxEnd)
+            </summary>
+            <returns>尽量按范围取(范围无效时返回string.Empty)</returns>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.IsInt(System.String)">
+            <summary>
+            字符串是否为十进制整数(可包含正负号[开头允许有一个],小数点[仅结尾可有])(不是使用正则表达式)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.IsNum(System.String)">
+            <summary>
+            字符串是否为十进制数值(可包含正负号[开头允许有一个],小数点[最多一个])(不是使用正则表达式)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.GetFirstMeaningfulString(System.String[])">
+            <summary>
+            模仿??操作符,取列表中第一个有意义的字符串,全无意则取最后一个值。(无意义:null, 空白字符串[Empty,WhiteSpace])
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.MaybeSqlInjection(System.String)">
+            <summary>
+            判断字符串是否可能是SQL注入(包含以下字符:";","'","--","/*","*/","xp_")
+            </summary>
+            <param name="me">应该是从不可信任来源传入的字符串(比如:客户端)</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.GetChineseWord(System.String)">
+            <summary>
+            提取中文(连在一起)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.IsIP4(System.String)">
+            <summary>
+            判断字符串是否为IP4
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_String.SplitNum``1(System.String,System.Collections.Generic.List{``0}@,System.Collections.Generic.List{System.String}@,System.String[],System.StringSplitOptions)">
+            <summary>
+            将字符串拆分为两个列表,数字与非数字
+            </summary>
+        </member>
+        <member name="T:Apq.GlobalObject">
+            <summary>
+            全局对象
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.TheAssembly">
+            <summary>
+            该程序集
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.TheProcess">
+            <summary>
+            当前进程
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.EntryFolder">
+            <summary>
+            当前程序的入口目录。入口程序集(dll或exe)所在目录(以"\"结尾的绝对路径)
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.DllFolder">
+            <summary>
+            本程序集(dll或exe)所在目录(以"\"结尾的绝对路径)
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.DefaultConfigFolder">
+            <summary>
+            DefaultConfig目录(以"\"结尾)
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.ConfigFolder">
+            <summary>
+            Config目录(以"\"结尾)
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.LogFolder">
+            <summary>
+            日志目录(以"\"结尾)
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.NamedInstances">
+            <summary>
+            命名实例集合
+            </summary>
+        </member>
+        <member name="M:Apq.GlobalObject.GetOrAddSingleton``1(System.Func{``0})">
+            <summary>
+            获取或添加单态实例
+            </summary>
+            <param name="factory">提供创建实例的方法</param>
+            <remarks>创建实例后立即自动调用初始化方法(Init)</remarks>
+        </member>
+        <member name="T:Apq.ISingleton`1">
+            <summary>
+            表示单态模式(注意实现静态成员)
+            </summary>
+            <typeparam name="T"></typeparam>
+        </member>
+        <member name="P:Apq.ISingleton`1.Instance">
+            <summary>
+            获取单态实例
+            </summary>
+        </member>
+        <member name="M:Apq.ISingleton`1.Init">
+            <summary>
+            对新创建的实例进行初始化(可以为空方法,实现类应在创建单态实例后立即调用)
+            </summary>
+        </member>
+        <member name="T:Apq.JsonPocoBase">
+            <summary>
+            Json简单类的抽象基类(用于解析Json结构的类应继承此类)
+            </summary>
+        </member>
+        <!-- Badly formed XML comment ignored for member "T:Apq.log4netHelper" -->
+        <member name="M:Apq.log4netHelper.UseConfigFile(System.String)">
+            <summary>
+            log4net使用自定义配置文件(如果没有同名的用户配置文件,则使用默认配置文件)
+            </summary>
+            <param name="fileName">配置文件名</param>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="P:Apq.log4netHelper.RollingLoggerName">
+            <summary>
+            获取或设置滚动日志器名称(配置文件中应使用该名称)
+            </summary>
+        </member>
+        <member name="P:Apq.log4netHelper.MsSqlLoggerName">
+            <summary>
+            获取或设置MsSql日志器名称(配置文件中应使用该名称)
+            </summary>
+        </member>
+        <member name="P:Apq.log4netHelper.EFRollingLoggerName">
+            <summary>
+            获取或设置EF滚动日志器名称(配置文件中应使用该名称)
+            </summary>
+        </member>
+        <member name="M:Apq.log4netHelper.Log(log4net.ILog,log4net.Core.Level,System.Object,System.Exception)">
+            <summary>
+            记录日志
+            </summary>
+            <param name="me">日志器</param>
+            <param name="level">日志级别(有效级别为 Debug Info Warn Error Fatal)</param>
+            <param name="message">信息</param>
+            <param name="exception">异常对象</param>
+            <remarks>该方法未捕获异常</remarks>
+        </member>
+        <member name="M:Apq.log4netHelper.LogToRollingFile(log4net.Core.Level,System.Object,System.Exception)">
+            <summary>
+            记录日志到滚动文件
+            </summary>
+            <param name="level">日志级别(有效级别为 Debug Info Warn Error Fatal)</param>
+            <param name="message">信息</param>
+            <param name="exception">异常对象</param>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="M:Apq.log4netHelper.LogToRollingFileAsync(log4net.Core.Level,System.Object,System.Exception)">
+            <summary>
+            [异步]记录日志到滚动文件
+            </summary>
+            <param name="level">日志级别(有效级别为 Debug Info Warn Error Fatal)</param>
+            <param name="message">信息</param>
+            <param name="exception">异常对象</param>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="M:Apq.log4netHelper.LogToMsSql(log4net.Core.Level,System.Object,System.Exception)">
+            <summary>
+            记录日志到数据库
+            </summary>
+            <param name="level">日志级别(有效级别为 Debug Info Warn Error Fatal)</param>
+            <param name="message">信息</param>
+            <param name="exception">异常对象</param>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="M:Apq.log4netHelper.LogToMsSqlAsync(log4net.Core.Level,System.Object,System.Exception)">
+            <summary>
+            [异步]记录日志到数据库
+            </summary>
+            <param name="level">日志级别(有效级别为 Debug Info Warn Error Fatal)</param>
+            <param name="message">信息</param>
+            <param name="exception">异常对象</param>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="M:Apq.log4netHelper.DataBase_Log(System.String)">
+            <summary>
+            用法:将DbContext.Database.Log的值设置为该方法
+            </summary>
+        </member>
+        <member name="M:Apq.log4netHelper.LogToEFRollingFile(log4net.Core.Level,System.String)">
+            <summary>
+            记录EF生成的SQL语句到EF滚动文件
+            </summary>
+            <param name="level">日志级别(有效级别为 Debug Info Warn Error Fatal)</param>
+            <param name="sql">SQL语句</param>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="M:Apq.log4netHelper.LogToEFRollingFileAsync(log4net.Core.Level,System.String)">
+            <summary>
+            [异步]记录EF生成的SQL语句到EF滚动文件
+            </summary>
+            <param name="level">日志级别(有效级别为 Debug Info Warn Error Fatal)</param>
+            <param name="sql">SQL语句</param>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="M:Apq.log4netHelper.WriteLog(log4net.Core.Level,System.String,System.String,System.Exception)">
+            <summary>
+            [异步]记录日志到滚动文件(与LogToRollingFileAsync相同)
+            </summary>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="M:Apq.log4netHelper.WriteException(System.Exception,System.String,System.String)">
+            <summary>
+            [异步]记录异常到滚动文件(自动展开下层异常)
+            </summary>
+            <remarks>该方法不会产生异常</remarks>
+        </member>
+        <member name="T:Apq.Net.HttpClientHelper">
+            <summary>
+            使用HttpClient进行Http访问
+            </summary>
+        </member>
+        <member name="M:Apq.Net.HttpClientHelper.GetResponseString(System.String,System.Net.Http.HttpMethod,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}},System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}},System.String,System.Boolean,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Threading.CancellationToken)">
+            <summary>
+            Get请求时,整合参数到url再访问,返回响应串
+            </summary>
+            <param name="url"></param>
+            <param name="method">Get或Post</param>
+            <param name="ps">参数</param>
+            <param name="headers">请求头</param>
+            <param name="contentType">设置内容的ContentType</param>
+            <param name="disableCache">是否禁用缓存</param>
+            <param name="encoding">编码格式</param>
+            <param name="urlEncodeFunc">提供url编码方法。默认使用 Encoder.UrlEncode。</param>
+            <param name="cancellationToken"></param>
+        </member>
+        <member name="M:Apq.Net.HttpClientHelper.MultipartPostFile(System.String,System.String,System.Byte[],System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}},System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}},System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Threading.CancellationToken)">
+            <summary>
+            上传文件
+            </summary>
+            <param name="url">上传地址</param>
+            <param name="uploadName">文件名</param>
+            <param name="fileContent">文件内容</param>
+            <param name="ps">参数</param>
+            <param name="headers">请求头</param>
+            <param name="encoding">编码格式</param>
+            <param name="urlEncodeFunc">提供url编码方法。默认使用 Encoder.UrlEncode。</param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.Net.HttpClientor">
+            <summary>
+            HttpClient的单态封装
+            </summary>
+        </member>
+        <member name="M:Apq.Net.HttpClientor.Init">
+            <summary>
+            对新创建的实例进行初始化(可以为空方法,实现类应在创建单态实例后立即调用)
+            </summary>
+        </member>
+        <member name="F:Apq.Net.HttpClientor._lazyClient">
+            <summary>
+            用于延迟创建对象(延迟到首次使用其Value属性时)
+            </summary>
+        </member>
+        <member name="P:Apq.Net.HttpClientor.CacheDisabled">
+            <summary>
+            是否禁用缓存
+            </summary>
+        </member>
+        <member name="T:Apq.Net.Local">
+            <summary>
+            本机功能
+            </summary>
+        </member>
+        <member name="M:Apq.Net.Local.GetIdelPort(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            获取范围内[Min, Max]的一个空闲的端口(随机)
+            </summary>
+            <param name="PortType">类型{1:TCP, 2:UDP, ...}</param>
+            <param name="Min">最小值(含)</param>
+            <param name="Max">最大值(含)</param>
+        </member>
+        <member name="T:Apq.Net.PersistentClient">
+            <summary>
+            代表一个已连接到服务器的长连接客户端
+            </summary>
+            <param name="client">WebSocket或Socket</param>
+        </member>
+        <member name="M:Apq.Net.PersistentClient.#ctor(System.Object)">
+            <summary>
+            代表一个已连接到服务器的长连接客户端
+            </summary>
+            <param name="client">WebSocket或Socket</param>
+        </member>
+        <member name="P:Apq.Net.PersistentClient.SessionID">
+            <summary>
+            自动分配客户端标识(会话ID)
+            </summary>
+        </member>
+        <member name="P:Apq.Net.PersistentClient.Client">
+            <summary>
+            已接受的客户端(已连接)
+            </summary>
+        </member>
+        <member name="P:Apq.Net.PersistentClient.Connected">
+            <summary>
+            是否已连接
+            </summary>
+        </member>
+        <member name="P:Apq.Net.PersistentClient.ShouldClose">
+            <summary>
+            连接是否应该关闭(已空闲过久)
+            </summary>
+        </member>
+        <member name="P:Apq.Net.PersistentClient.CloseReason">
+            <summary>
+            关闭原因(只接受第一次非空赋值)
+            </summary>
+        </member>
+        <member name="E:Apq.Net.PersistentClient.BeforeClose">
+            <summary>
+            连接关闭前
+            </summary>
+        </member>
+        <member name="E:Apq.Net.PersistentClient.AfterClose">
+            <summary>
+            连接关闭后
+            </summary>
+        </member>
+        <member name="M:Apq.Net.PersistentClient.Close(System.String,System.Threading.CancellationToken)">
+            <summary>
+            关闭长连接
+            </summary>
+        </member>
+        <member name="M:Apq.Net.PersistentClient.CloseImp(System.String,System.Threading.CancellationToken)">
+            <summary>
+            关闭长连接(实现)
+            </summary>
+            <returns>是否关闭成功</returns>
+        </member>
+        <member name="M:Apq.Net.PersistentClient.SendSessionID">
+            <summary>
+            将SessionID发到客户端
+            </summary>
+            <returns>是否发送成功</returns>
+        </member>
+        <member name="M:Apq.Net.PersistentClient.Send(System.Collections.Generic.IList{System.Byte},System.Threading.CancellationToken)">
+            <summary>
+            发送数据到客户端
+            </summary>
+            <returns>是否发送成功</returns>
+        </member>
+        <member name="M:Apq.Net.PersistentClient.SendImp(System.Collections.Generic.IList{System.Byte},System.Threading.CancellationToken)">
+            <summary>
+            发送数据到客户端(实现)
+            </summary>
+            <returns>是否发送成功</returns>
+        </member>
+        <member name="M:Apq.Net.PersistentClient.Send(System.String,System.Threading.CancellationToken)">
+            <summary>
+            发送消息到客户端
+            </summary>
+            <returns>是否发送成功</returns>
+        </member>
+        <member name="M:Apq.Net.PersistentClient.SendImp(System.String,System.Threading.CancellationToken)">
+            <summary>
+            发送消息到客户端(实现)
+            </summary>
+            <returns>是否发送成功</returns>
+        </member>
+        <member name="E:Apq.Net.PersistentClient.BeforeSend">
+            <summary>
+            发送前
+            </summary>
+        </member>
+        <member name="E:Apq.Net.PersistentClient.AfterSend">
+            <summary>
+            发送后
+            </summary>
+        </member>
+        <member name="E:Apq.Net.PersistentClient.BeforeSendMsg">
+            <summary>
+            发送前(文本)
+            </summary>
+        </member>
+        <member name="E:Apq.Net.PersistentClient.AfterSendMsg">
+            <summary>
+            发送后(文本)
+            </summary>
+        </member>
+        <member name="E:Apq.Net.PersistentClient.AfterReceiveData">
+            <summary>
+            接收到客户端发送的数据后
+            </summary>
+        </member>
+        <member name="E:Apq.Net.PersistentClient.AfterReceiveMsg">
+            <summary>
+            接收到客户端发送的消息后
+            </summary>
+        </member>
+        <member name="P:Apq.Net.PersistentClient.LastActiveTime">
+            <summary>
+            最后心跳时间(由客户端发起)
+            </summary>
+        </member>
+        <member name="T:Apq.Net.PortEndPoint">
+            <summary>
+            端口端点
+            </summary>
+        </member>
+        <member name="P:Apq.Net.PortEndPoint.EndPoint">
+            <summary>
+            端口
+            </summary>
+        </member>
+        <member name="P:Apq.Net.PortEndPoint.IsListen">
+            <summary>
+            是否为监听的端口
+            </summary>
+        </member>
+        <member name="M:Apq.Net.PortEndPoint.Equals(Apq.Net.PortEndPoint)">
+            <summary>
+            相等比较
+            </summary>
+            <remarks>IP地址和端口都相等则为相等。注意:0地址与任意地址都相等,0端口与任意端口都相等</remarks>
+        </member>
+        <member name="M:Apq.Net.PortEndPoint.GetHashCode">
+            <summary>
+            获取哈希值
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Net.PortEndPoint.Equals(System.Object)">
+            <summary>
+            相等比较
+            </summary>
+        </member>
+        <member name="M:Apq.Net.PortEndPoint.op_Equality(Apq.Net.PortEndPoint,Apq.Net.PortEndPoint)">
+            <summary>
+            ==运算符
+            </summary>
+        </member>
+        <member name="M:Apq.Net.PortEndPoint.op_Inequality(Apq.Net.PortEndPoint,Apq.Net.PortEndPoint)">
+            <summary>
+            !=运算符
+            </summary>
+        </member>
+        <member name="T:Apq.Net.PostContent">
+            <summary>
+            默认的 FormUrlEncodedContent 碰到超长的文本会出现 uri too long 的异常,这里自己封装一个
+            或使用 StringContent,同时设置ContentType="application/x-www-form-urlencoded" 即可
+            参考来自 stackoverflow
+            </summary>
+        </member>
+        <member name="M:Apq.Net.UrlHelper.GetUrlWithoutParams(System.String,System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            获取不含参数的url
+            </summary>
+        </member>
+        <member name="M:Apq.Net.UrlHelper.UrlAddParams(System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}},System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})">
+            <summary>
+            在url的QueryString里添加参数
+            </summary>
+            <param name="url"></param>
+            <param name="ps"></param>
+            <param name="encoding"></param>
+            <param name="encodeFunc">提供编码算法,也可以使用解码算法。默认使用Encoder.UrlEncode</param>
+        </member>
+        <member name="M:Apq.Net.UrlHelper.PickQueryString(System.String,System.String)">
+            <summary>
+            提取QueryString
+            </summary>
+            <param name="separator">分隔符(这个字符之后的子串算为QueryString)</param>
+        </member>
+        <member name="M:Apq.Net.UrlHelper.PickParams(System.String,System.Collections.Generic.IList{System.String},System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})">
+            <summary>
+            从QueryString中提取参数
+            </summary>
+            <param name="queryString"></param>
+            <param name="separator"></param>
+            <param name="assignment"></param>
+            <param name="encoding"></param>
+            <param name="encodeFunc">提供编码算法,也可以使用解码算法。默认使用WebUtility.UrlDecode</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Net.UrlHelper.PickParamValue``1(System.String,System.String,System.Collections.Generic.IList{System.String},System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})">
+            <summary>
+            从QueryString中提取参数值
+            </summary>
+            <typeparam name="T">值的类型</typeparam>
+            <param name="queryString"></param>
+            <param name="key">参数名称(如果同名参数有多个,只取第一个)</param>
+            <param name="separator"></param>
+            <param name="assignment"></param>
+            <param name="encoding"></param>
+            <param name="encodeFunc">提供编码算法,也可以使用解码算法。默认使用WebUtility.UrlDecode</param>
+            <returns>参数值,是否获取成功</returns>
+        </member>
+        <!-- Badly formed XML comment ignored for member "M:Apq.Net.UrlHelper.BuildQueryString(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}},System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})" -->
+        <member name="T:Apq.NotifyChange.ListItemChanged`1">
+            <summary>
+            表示列表中更改的一项(一行)
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.ListItemChanged`1.Index">
+            <summary>
+            在列表中的索引位置
+            </summary>
+        </member>
+        <member name="E:Apq.NotifyChange.NotifyChangeList`1.ListChanging">
+            <summary>
+            列表即将更改事件
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeList`1.OnListChanging(Apq.NotifyChange.NotifyChangeListEventArgs{`0})">
+            <summary>
+            通知列表即将更改
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeList`1.FireListChanging(Apq.NotifyChange.NotifyChangeListEventArgs{`0})">
+            <summary>
+            仅触发事件
+            </summary>
+            <returns>是否阻止更改</returns>
+        </member>
+        <member name="E:Apq.NotifyChange.NotifyChangeList`1.ListChanged">
+            <summary>
+            列表已更改事件
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeList`1.OnListChanged(Apq.NotifyChange.NotifyChangeListEventArgs{`0})">
+            <summary>
+            通知列表已更改
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeList`1.FireListChanged(Apq.NotifyChange.NotifyChangeListEventArgs{`0})">
+            <summary>
+            仅触发事件
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeList`1.RemoveAll(System.Predicate{`0})">
+            <summary>
+            移除满足条件的所有项
+            </summary>
+        </member>
+        <member name="T:Apq.NotifyChange.NotifyChangeListEventArgs`1">
+            <summary>
+            列表事件的参数
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeListEventArgs`1.#ctor(Apq.NotifyChange.NotifyChangeList{`0})">
+            <summary>
+            列表事件的参数
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.List">
+            <summary>
+            列表实例
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.ChangeType">
+            <summary>
+            更改类型
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Cancel">
+            <summary>
+            指示是否取消(中断后续流程)
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Deleted">
+            <summary>
+            删除的项
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Inserted">
+            <summary>
+            插入的项
+            </summary>
+        </member>
+        <member name="T:Apq.NotifyChange.NotifyChangeProperty">
+            <summary>
+            可暂停的更改通知
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty.#ctor(System.String,Apq.NotifyChange.NotifyPropertyChange)">
+            <summary>
+            可暂停的更改通知
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty.Instance">
+            <summary>
+            属性所属实例
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty.PropertyName">
+            <summary>
+            属性名称
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty.ChangingSuspend">
+            <summary>
+            是否已暂停更改前事件
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty.ChangedSuspend">
+            <summary>
+            是否已暂停更改后事件
+            </summary>
+        </member>
+        <member name="T:Apq.NotifyChange.NotifyChangeProperty`1">
+            <summary>
+            支持更改通知的属性(可暂停)
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.#ctor(System.String,Apq.NotifyChange.NotifyPropertyChange)">
+            <summary>
+            支持更改通知的属性(可暂停)
+            </summary>
+        </member>
+        <member name="E:Apq.NotifyChange.NotifyChangeProperty`1.Changing">
+            <summary>
+            更改前
+            </summary>
+        </member>
+        <member name="E:Apq.NotifyChange.NotifyChangeProperty`1.Changed">
+            <summary>
+            更改后
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Value">
+            <summary>
+            当前值
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.HasValue">
+            <summary>
+            属性是否有值
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.OnChanging(`0,`0)">
+            <summary>
+            更改前(派生类重写时可以直接调用Fire方法而不调用此方法)
+            </summary>
+            <returns>是否阻止更改</returns>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.OnChanged(`0,`0)">
+            <summary>
+            更改后(派生类重写时可以直接调用Fire方法而不调用此方法)
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanging(`0,`0)">
+            <summary>
+            仅触发事件(暂停则不触发)
+            </summary>
+            <returns>是否阻止更改</returns>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanged(`0,`0)">
+            <summary>
+            仅触发事件(暂停则不触发)
+            </summary>
+        </member>
+        <member name="T:Apq.NotifyChange.NotifyPropertyChange">
+            <summary>
+            属性更改通知(可暂停)
+            </summary>
+            <remarks></remarks>
+        </member>
+        <member name="F:Apq.NotifyChange.NotifyPropertyChange.EventSuspendAnyProperty">
+            <summary>
+            表示用于阻止任意属性的更改事件的可用名称["All", "Any"]
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyPropertyChange.EventSuspendList_Contains(System.Collections.Generic.List{System.String},System.String)">
+            <summary>
+            暂停列表中是否包含指定名称
+            </summary>
+            <returns>如果列表中包含了“任意属性”,则一定包含(即返回true)</returns>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyPropertyChange.Dispose(System.Boolean)">
+            <param name="disposing">指定释放类型{true:托管对象,false:未托管对象}</param>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyPropertyChange.EventSuspend_PropertyChanging(System.String,System.Boolean)">
+            <summary>
+            暂停或恢复 引发属性即将更改事件
+            </summary>
+            <param name="propertyName">属性名("All"/"Any"表示任意属性)</param>
+            <param name="Resume">是否恢复引发事件</param>
+        </member>
+        <member name="E:Apq.NotifyChange.NotifyPropertyChange.PropertyChanging">
+            <summary>
+            属性即将更改事件
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyPropertyChange.OnPropertyChanging(System.String,System.Object,System.Object)">
+            <summary>
+            通知属性即将更改
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyPropertyChange.FirePropertyChanging(System.String,System.Object,System.Object)">
+            <summary>
+            仅触发事件(暂停则不触发)
+            </summary>
+            <returns>是否阻止更改</returns>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyPropertyChange.EventSuspend_PropertyChanged(System.String,System.Boolean)">
+            <summary>
+            暂停或恢复 引发属性已更改事件
+            </summary>
+            <param name="propertyName">属性名("All"/"Any"表示任意属性)</param>
+            <param name="Resume">是否恢复引发事件</param>
+        </member>
+        <member name="E:Apq.NotifyChange.NotifyPropertyChange.PropertyChanged">
+            <summary>
+            属性已更改事件
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyPropertyChange.OnPropertyChanged(System.String,System.Object,System.Object)">
+            <summary>
+            通知属性已更改
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.NotifyPropertyChange.FirePropertyChanged(System.String,System.Object,System.Object)">
+            <summary>
+            仅触发事件(暂停则不触发)
+            </summary>
+        </member>
+        <member name="T:Apq.NotifyChange.PropertyChangeEventArgs">
+            <summary>
+            属性更改事件参数
+            </summary>
+        </member>
+        <member name="M:Apq.NotifyChange.PropertyChangeEventArgs.#ctor(System.String)">
+            <summary>
+            属性更改事件参数
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.PropertyName">
+            <summary>
+            属性名
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.Cancel">
+            <summary>
+            指示是否取消(中断后续流程)
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.OriginalValue">
+            <summary>
+            原值
+            </summary>
+        </member>
+        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.NewValue">
+            <summary>
+            新值
+            </summary>
+        </member>
+        <member name="T:Apq.PlAccessor.PHP.QueryStringBuilder">
+            <summary>
+             Helps up build a query string by converting an object into a set of named-values and making a query string out of it.
+            </summary>
+        </member>
+        <member name="M:Apq.PlAccessor.PHP.QueryStringBuilder.BuildQueryString(System.Object,System.String)">
+            <summary>
+            相当于PHP中的 http_build_query
+            </summary>
+        </member>
+        <member name="M:Apq.PlAccessor.PHP.QueryStringBuilder.GetUriString(System.String)">
+            <summary>
+             Convert the key-value pairs that we've collected into an actual query string.
+            </summary>
+        </member>
+        <member name="M:Apq.PlAccessor.PHP.QueryStringBuilder.AddEntry(System.String,System.Object,System.Boolean)">
+            <summary> Adds a single entry to the collection. </summary>
+            <param name="prefix"> The prefix to use when generating the key of the entry. Can be null. </param>
+            <param name="instance"> The instance to add.
+             
+             - If the instance is a dictionary, the entries determine the key and values.
+             - If the instance is a collection, the keys will be the index of the entries, and the value
+             will be each item in the collection.
+             - If allowObjects is true, then the object's properties' names will be the keys, and the
+             values of the properties will be the values.
+             - Otherwise the instance is added with the given prefix to the collection of items. </param>
+            <param name="allowObjects"> true to add the properties of the given instance (if the object is
+             not a collection or dictionary), false to add the object as a key-value pair. </param>
+        </member>
+        <member name="M:Apq.PlAccessor.PHP.QueryStringBuilder.Add(System.String,System.Collections.Generic.IEnumerable{Apq.PlAccessor.PHP.QueryStringBuilder.Entry})">
+            <summary> Adds the given collection of entries. </summary>
+        </member>
+        <member name="M:Apq.PlAccessor.PHP.QueryStringBuilder.GetObjectAdapter(System.Object)">
+            <summary>
+             Returns a collection of entries that represent the properties on the object.
+            </summary>
+        </member>
+        <member name="M:Apq.PlAccessor.PHP.QueryStringBuilder.GetArrayAdapter(System.Collections.ICollection)">
+            <summary>
+             Returns a collection of entries that represent items in the collection.
+            </summary>
+        </member>
+        <member name="M:Apq.PlAccessor.PHP.QueryStringBuilder.GetDictionaryAdapter(System.Collections.IDictionary)">
+            <summary>
+             Returns a collection of entries that represent items in the dictionary.
+            </summary>
+        </member>
+        <member name="T:Apq.RandomString">
+            <summary>
+            随机字符串生成器
+            </summary>
+        </member>
+        <member name="P:Apq.RandomString.SimpleChars">
+            <summary>
+            易于辨识的字母数字范围(10个数字+小写优先)
+            </summary>
+        </member>
+        <member name="P:Apq.RandomString.SimpleChars2">
+            <summary>
+            易于辨识的字母数字范围(10个数字+大写优先)
+            </summary>
+        </member>
+        <member name="M:Apq.RandomString.Random(System.Int32,System.Boolean,System.Char[])">
+            <summary>
+            生成随机字符串
+            </summary>
+            <param name="Length">指定长度</param>
+            <param name="Repeat">是否允许重复</param>
+            <param name="All">字符集</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.RandomString.Random(System.Int32,System.Boolean,System.String)">
+            <summary>
+            生成随机字符串
+            </summary>
+            <param name="Length">指定长度</param>
+            <param name="Repeat">是否允许重复</param>
+            <param name="All">字符集</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.RandomString.Random(System.UInt32,System.Int32,System.Boolean,System.Char[])">
+            <summary>
+            返回指定数量,指定长度的随机字符串
+            </summary>
+            <param name="Count">指定的数量</param>
+            <param name="Length">指定的长度</param>
+            <param name="Repeat">是否允许重复</param>
+            <param name="All">字符集</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.RandomString.Random(System.UInt32,System.Int32,System.Boolean,System.String)">
+            <summary>
+            返回指定数量,指定长度的随机字符串
+            </summary>
+            <param name="Count">指定的数量</param>
+            <param name="Length">指定的长度</param>
+            <param name="Repeat">是否允许重复</param>
+            <param name="All">字符集</param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.Reflection.TypeCache">
+            <summary>
+            类型缓存,避免重复读取类型
+            </summary>
+        </member>
+        <member name="M:Apq.Reflection.TypeCache.Init">
+            <summary>
+            对新创建的实例进行初始化
+            </summary>
+        </member>
+        <member name="M:Apq.Reflection.TypeCache.GetAssembly(System.String)">
+            <summary>
+            获取程序集,缓存中不存在时,按路径加载到缓存
+            </summary>
+            <param name="dllPath">程序集路径</param>
+        </member>
+        <member name="M:Apq.Reflection.TypeCache.GetType(System.String,System.String)">
+            <summary>
+            获取类型,缓存中不存在时,自动寻找类型并加入缓存
+            </summary>
+            <param name="fullClassName">类全名</param>
+            <param name="dllPath">指定在哪个程序集中寻找</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Reflection.TypeCache.AddType(System.String,System.Type,System.Boolean)">
+            <summary>
+            将类型添加到缓存
+            </summary>
+            <param name="fullClassName">类全名</param>
+            <param name="type"></param>
+            <param name="replace">重复添加时是否替换</param>
+            <remarks>程序集加入缓存使用GetAssembly方法</remarks>
+        </member>
+        <member name="T:Apq.Security.Cryptography.AesHelper">
+            <summary>
+            AesHelper(对称加密)
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.AesHelper.FormatKey(System.Byte[])">
+            <summary>
+            格式化密钥
+            </summary>
+            <param name="aesKey">密钥</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.AesHelper.EncryptFile(System.String,System.String,System.Byte[],System.Byte[],System.Security.Cryptography.CipherMode,System.Security.Cryptography.PaddingMode)">
+            <summary>
+            加密文件
+            </summary>
+            <param name="inName">来源文件</param>
+            <param name="outName">输出文件</param>
+            <param name="Key">加密密钥</param>
+            <param name="IV">初始向量</param>
+            <param name="cipherMode">块密码模式</param>
+            <param name="paddingMode">填充模式</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.AesHelper.DecryptFile(System.String,System.String,System.Byte[],System.Byte[],System.Security.Cryptography.CipherMode,System.Security.Cryptography.PaddingMode)">
+            <summary>
+            解密文件
+            </summary>
+            <param name="inName">来源文件</param>
+            <param name="outName">输出文件</param>
+            <param name="Key">解密密钥</param>
+            <param name="IV">初始向量</param>
+            <param name="cipherMode">块密码模式</param>
+            <param name="paddingMode">填充模式</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.AesHelper.EncryptString(System.String,System.Byte[],System.Byte[],System.Security.Cryptography.CipherMode,System.Security.Cryptography.PaddingMode)">
+            <summary>
+            加密字符串
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="Key">加密密钥</param>
+            <param name="IV">初始向量</param>
+            <param name="cipherMode">块密码模式</param>
+            <param name="paddingMode">填充模式</param>
+            <returns>Base64编码后的字符串</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.AesHelper.DecryptString(System.String,System.Byte[],System.Byte[],System.Security.Cryptography.CipherMode,System.Security.Cryptography.PaddingMode)">
+            <summary>
+            解密字符串
+            </summary>
+            <param name="CypherText">加密后的Base64字符串</param>
+            <param name="Key">解密密钥</param>
+            <param name="IV">初始向量</param>
+            <param name="cipherMode">块密码模式</param>
+            <param name="paddingMode">填充模式</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.AesHelper.EncryptString(System.String,System.String,System.String,System.Text.Encoding,System.Text.Encoding,System.Security.Cryptography.CipherMode,System.Security.Cryptography.PaddingMode)">
+            <summary>
+            加密字符串
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="Key">加密密钥</param>
+            <param name="IV">初始向量</param>
+            <param name="textEncoding">原始串编码</param>
+            <param name="ivEncoding">初始向量编码</param>
+            <param name="cipherMode">块密码模式</param>
+            <param name="paddingMode">填充模式</param>
+            <returns>Base64编码后的字符串</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.AesHelper.DecryptString(System.String,System.String,System.String,System.Text.Encoding,System.Text.Encoding,System.Security.Cryptography.CipherMode,System.Security.Cryptography.PaddingMode)">
+            <summary>
+            解密字符串
+            </summary>
+            <param name="CypherText">加密后的Base64字符串</param>
+            <param name="Key">解密密钥</param>
+            <param name="IV">初始向量</param>
+            <param name="keyEncoding">解密密钥编码</param>
+            <param name="ivEncoding">初始向量编码</param>
+            <param name="cipherMode">块密码模式</param>
+            <param name="paddingMode">填充模式</param>
+        </member>
+        <member name="T:Apq.Security.Cryptography.BCRSA.RSAKEY">
+            <summary>
+            KEY 结构体
+            </summary>
+        </member>
+        <member name="P:Apq.Security.Cryptography.BCRSA.RSAKEY.PublicKey">
+            <summary>
+            公钥
+            </summary>
+        </member>
+        <member name="P:Apq.Security.Cryptography.BCRSA.RSAKEY.PrivateKey">
+            <summary>
+            私钥
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.BCRSA.EncryptByPrivateKey(System.String,System.String)">
+            <summary>
+            私钥加密
+            </summary>
+            <param name="data">加密内容</param>
+            <param name="pemPrivateKey">私钥(Base64后的)</param>
+            <returns>返回Base64内容</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.BCRSA.DecryptByPrivateKey(System.String,System.String)">
+            <summary>
+            私钥解密
+            </summary>
+            <param name="data">待解密的内容</param>
+            <param name="pemPrivateKey">私钥(Base64编码后的)</param>
+            <returns>返回明文</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.BCRSA.EncryptByPublicKey(System.String,System.String)">
+            <summary>
+            公钥加密
+            </summary>
+            <param name="data">加密内容</param>
+            <param name="pemPublicKey">公钥(Base64编码后的)</param>
+            <returns>返回Base64内容</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.BCRSA.DecryptByPublicKey(System.String,System.String)">
+            <summary>
+            公钥解密
+            </summary>
+            <param name="data">待解密的内容</param>
+            <param name="pemPublicKey">公钥(Base64编码后的)</param>
+            <returns>返回明文</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.BCRSA.SignByPrivateKey_SHA1WithRSA(System.String,System.String)">
+            <summary>
+            用私钥签名
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.BCRSA.VerifyByPublicKey_SHA1WithRSA(System.String,System.String,System.String)">
+            <summary>
+            用公钥验签
+            </summary>
+        </member>
+        <member name="T:Apq.Security.Cryptography.DESHelper">
+            <summary>
+            DESHelper(对称加密,据说不太安全,应使用AES)
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DESHelper.FormatKey(System.Byte[])">
+            <summary>
+            格式化密钥
+            </summary>
+            <param name="desKey">密钥</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DESHelper.EncryptFile(System.String,System.String,System.Byte[],System.Byte[])">
+            <summary>
+            加密文件
+            </summary>
+            <param name="inName">来源文件</param>
+            <param name="outName">输出文件</param>
+            <param name="desKey">加密密钥</param>
+            <param name="desIV">初始向量</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DESHelper.DecryptFile(System.String,System.String,System.Byte[],System.Byte[])">
+            <summary>
+            解密文件
+            </summary>
+            <param name="inName">来源文件</param>
+            <param name="outName">输出文件</param>
+            <param name="desKey">解密密钥</param>
+            <param name="desIV">初始向量</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DESHelper.EncryptString(System.String,System.Byte[],System.Byte[])">
+            <summary>
+            加密字符串
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="desKey">加密密钥</param>
+            <param name="desIV">初始向量</param>
+            <returns>Base64编码后的字符串</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DESHelper.DecryptString(System.String,System.Byte[],System.Byte[])">
+            <summary>
+            解密字符串
+            </summary>
+            <param name="CypherText">加密后的Base64字符串</param>
+            <param name="desKey">解密密钥</param>
+            <param name="desIV">初始向量</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DESHelper.EncryptString(System.String,System.String,System.String,System.Text.Encoding,System.Text.Encoding)">
+            <summary>
+            加密字符串
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="desKey">加密密钥</param>
+            <param name="desIV">初始向量</param>
+            <param name="keyEncoding">加密密钥编码</param>
+            <param name="ivEncoding">初始向量编码</param>
+            <returns>Base64编码后的字符串</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DESHelper.DecryptString(System.String,System.String,System.String,System.Text.Encoding,System.Text.Encoding)">
+            <summary>
+            解密字符串
+            </summary>
+            <param name="CypherText">加密后的Base64字符串</param>
+            <param name="desKey">解密密钥</param>
+            <param name="desIV">初始向量</param>
+            <param name="keyEncoding">解密密钥编码</param>
+            <param name="ivEncoding">初始向量编码</param>
+        </member>
+        <member name="T:Apq.Security.Cryptography.DSAHelper">
+            <summary>
+            DSA助手(数字签名)
+            </summary>
+        </member>
+        <member name="F:Apq.Security.Cryptography.DSAHelper.FileReadStep">
+            <summary>
+            文件操作时单次读取的最大字节数
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DSAHelper.CreateKey(System.Boolean)">
+            <summary>
+            创建密钥对(XmlString),使用者应将结果保存到文件存档
+            </summary>
+            <param name="ContainsPKey">是否包含私钥</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DSAHelper.SignString(System.String,System.String,System.Text.Encoding)">
+            <summary>
+            DSA签名
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="xmlString">密钥(公钥私钥俱有)</param>
+            <param name="textEncoding">原始串编码</param>
+            <returns>Base64编码后的已签名字符串</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.DSAHelper.VerifyString(System.String,System.String,System.String,System.Text.Encoding)">
+            <summary>
+            DSA验证
+            </summary>
+            <param name="CypherText">签名后的Base64字符串</param>
+            <param name="xmlString">密钥(至少含公钥)</param>
+            <param name="signString">签名串</param>
+            <param name="signEncoding">签名串编码</param>
+        </member>
+        <member name="T:Apq.Security.Cryptography.HMACSHA1Helper">
+            <summary>
+            HMAC-SHA1 Helper
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.HMACSHA1Helper.EncryptString(System.String,System.String,System.Text.Encoding,System.Text.Encoding)">
+            <summary>
+            字符串签名
+            </summary>
+            <param name="text">原始字符串</param>
+            <param name="key">密钥</param>
+            <param name="textEncoding">原始串编码</param>
+            <param name="keyEncoding">密钥编码</param>
+            <returns>签名结果(16进制)</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.HMACSHA1Helper.EncryptString(System.String,System.Byte[],System.Text.Encoding)">
+            <summary>
+            字符串签名
+            </summary>
+            <param name="text">原始字符串</param>
+            <param name="key">密钥</param>
+            <param name="textEncoding">原始串编码</param>
+            <returns>签名结果(16进制)</returns>
+        </member>
+        <member name="T:Apq.Security.Cryptography.MD5Helper">
+            <summary>
+            MD5Helper
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.MD5Helper.EncryptString(System.String,System.Text.Encoding)">
+            <summary>
+            加密字符串
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="textEncoding">原始串编码</param>
+            <returns>MD5串(16进制)</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.MD5Helper.EncryptFile(System.String)">
+            <summary>
+            加密文件
+            </summary>
+            <param name="inName">文件地址</param>
+            <returns>MD5串(16进制)</returns>
+        </member>
+        <member name="T:Apq.Security.Cryptography.RSAHelper">
+            <summary>
+            RSA助手(非对称算法)
+            </summary>
+        </member>
+        <member name="P:Apq.Security.Cryptography.RSAHelper.FileReadStep">
+            <summary>
+            文件操作时单次读取的最大字节数
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.RSAHelper.CreateKey(System.Boolean)">
+            <summary>
+            创建密钥对(XmlString),使用者应将结果保存到文件存档
+            </summary>
+            <param name="ContainsPKey">是否包含私钥</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.RSAHelper.GetPubKey(System.String)">
+            <summary>
+            从私钥中提取公钥
+            </summary>
+            <param name="PriKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.RSAHelper.EncryptFile(System.String,System.String,System.String,System.Security.Cryptography.RSAEncryptionPadding)">
+            <summary>
+            加密文件
+            </summary>
+            <param name="inName">来源文件</param>
+            <param name="outName">输出文件</param>
+            <param name="xmlString">密钥(至少含公钥)</param>
+            <param name="rsaPadding">填充模式</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.RSAHelper.DecryptFile(System.String,System.String,System.String,System.Security.Cryptography.RSAEncryptionPadding)">
+            <summary>
+            解密文件
+            </summary>
+            <param name="inName">来源文件</param>
+            <param name="outName">输出文件</param>
+            <param name="xmlString">密钥(公钥私钥俱有)</param>
+            <param name="rsaPadding">填充模式</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.RSAHelper.EncryptString(System.String,System.String,System.Text.Encoding,System.Security.Cryptography.RSAEncryptionPadding)">
+            <summary>
+            加密字符串
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="xmlString">公钥</param>
+            <param name="textEncoding">原始串编码</param>
+            <returns>Base64编码后的字符串</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.RSAHelper.DecryptString(System.String,System.String,System.Text.Encoding,System.Security.Cryptography.RSAEncryptionPadding)">
+            <summary>
+            解密字符串
+            </summary>
+            <param name="CypherText">加密后的Base64字符串</param>
+            <param name="textEncoding">原始串编码</param>
+            <param name="xmlString">私钥</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.RSAHelper.SignString(System.String,System.String,System.Text.Encoding)">
+            <summary>
+            RSA签名(SHA1)
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="xmlString">私钥</param>
+            <param name="textEncoding">原始串编码</param>
+            <returns>Base64编码后的已签名字符串</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.RSAHelper.VerifyString(System.String,System.String,System.String,System.Text.Encoding)">
+            <summary>
+            RSA验证(SHA1)
+            </summary>
+            <param name="CypherText">签名后的Base64字符串</param>
+            <param name="xmlString">公钥</param>
+            <param name="PlainText">原始串</param>
+            <param name="textEncoding">原始串编码</param>
+        </member>
+        <member name="T:Apq.Security.Cryptography.SymmetricAlgorithmHelper">
+            <summary>
+            对称算法助手
+            </summary>
+        </member>
+        <member name="F:Apq.Security.Cryptography.SymmetricAlgorithmHelper.FileReadStep">
+            <summary>
+            文件操作时单次读取的最大字节数
+            </summary>
+        </member>
+        <member name="M:Apq.Security.Cryptography.SymmetricAlgorithmHelper.FormatKey(System.Byte[],System.Int32)">
+            <summary>
+            格式化密钥,跳过全0字节,不足时补入0xFF
+            </summary>
+            <param name="Key">密钥</param>
+            <param name="keySize">返回'位'的长度(因为处理时的最小长度是字节,所以该值应是8的倍数)</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.SymmetricAlgorithmHelper.EncryptFile(System.String,System.String,System.Security.Cryptography.SymmetricAlgorithm)">
+            <summary>
+            加密文件
+            </summary>
+            <param name="inName">来源文件</param>
+            <param name="outName">输出文件</param>
+            <param name="Algorithm">对称算法</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.SymmetricAlgorithmHelper.DecryptFile(System.String,System.String,System.Security.Cryptography.SymmetricAlgorithm)">
+            <summary>
+            解密文件
+            </summary>
+            <param name="inName">来源文件</param>
+            <param name="outName">输出文件</param>
+            <param name="Algorithm">对称算法</param>
+        </member>
+        <member name="M:Apq.Security.Cryptography.SymmetricAlgorithmHelper.EncryptString(System.String,System.Security.Cryptography.SymmetricAlgorithm)">
+            <summary>
+            加密字符串
+            </summary>
+            <param name="PlainText">原始字符串</param>
+            <param name="Algorithm">对称算法</param>
+            <returns>Base64编码后的字符串</returns>
+        </member>
+        <member name="M:Apq.Security.Cryptography.SymmetricAlgorithmHelper.DecryptString(System.String,System.Security.Cryptography.SymmetricAlgorithm)">
+            <summary>
+            解密字符串
+            </summary>
+            <param name="CypherText">加密后的Base64字符串</param>
+            <param name="Algorithm">对称算法</param>
+            <returns>原始字符串</returns>
+        </member>
+        <member name="T:Apq.Tasking.CycleTask">
+            <summary>
+            给任务命名,并将任务和取消令牌关联起来。并提供循环任务模板给子类。
+            </summary>
+        </member>
+        <member name="P:Apq.Tasking.CycleTask.Interval">
+            <summary>
+            循环间隔时间。默认40,单位毫秒。
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.CycleWork">
+            <summary>
+            循环任务模板
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.BeforeCycleWork">
+            <summary>
+            循环前的工作,一般是准备类工作
+            </summary>
+            <returns>返回false表示准备工作不成功,任务直接结束</returns>
+        </member>
+        <member name="E:Apq.Tasking.CycleTask.BeforeCycleWorkCompleted">
+            <summary>
+            通知循环前的工作完成
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.CycleSubWork">
+            <summary>
+            单次循环的工作
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.FinallyCycleWork">
+            <summary>
+            任务结束时的工作
+            </summary>
+        </member>
+        <member name="P:Apq.Tasking.CycleTask.CTask">
+            <summary>
+            启动的任务
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.Start(System.Threading.Tasks.TaskCreationOptions)">
+            <summary>
+            启动(未启动过或已运行结束的任务才能真正的再次启动)
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.Stop">
+            <summary>
+            通知任务取消
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.WhileDo(System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到达成停止条件
+            </summary>
+            <param name="stopTask">停止条件,返回值为true后停止操作</param>
+            <param name="doTask">执行的操作,返回true表示执行了操作</param>
+            <param name="success">达成后的操作</param>
+            <param name="fail">最终未达成时的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否达成</returns>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.WhileDo(System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到达成停止条件
+            </summary>
+            <param name="stopFunc">停止条件,返回值为true后停止操作</param>
+            <param name="doTask">执行的操作,返回true表示执行了操作</param>
+            <param name="success">达成后的操作</param>
+            <param name="fail">最终未达成时的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否达成</returns>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.WhileDo(System.Func{System.Boolean},System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到达成停止条件
+            </summary>
+            <param name="stopFunc">停止条件,返回值为true后停止操作</param>
+            <param name="doFunc">执行的操作,返回true表示执行了操作</param>
+            <param name="success">达成后的操作</param>
+            <param name="fail">最终未达成时的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否达成</returns>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.DoUntil(System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到成功或超时
+            </summary>
+            <param name="doTask">执行的操作,返回true表示执行了操作</param>
+            <param name="stopTask">返回值为true后停止操作</param>
+            <param name="success">成功后的操作</param>
+            <param name="fail">失败后的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否操作成功</returns>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.DoUntil(System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到成功或超时
+            </summary>
+            <param name="doTask">执行的操作,返回true表示执行了操作</param>
+            <param name="stopFunc">返回值为true后停止操作</param>
+            <param name="success">成功后的操作</param>
+            <param name="fail">失败后的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否操作成功</returns>
+        </member>
+        <member name="M:Apq.Tasking.CycleTask.DoUntil(System.Func{System.Boolean},System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到成功或超时
+            </summary>
+            <param name="doFunc">执行的操作,返回true表示执行了操作</param>
+            <param name="stopFunc">返回值为true后停止操作</param>
+            <param name="success">成功后的操作</param>
+            <param name="fail">失败后的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否操作成功</returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.WaitUntil(System.Threading.CancellationToken,System.Func{System.Boolean},System.Int32,System.Int32)">
+            <summary>
+            等待到条件成立或超时
+            </summary>
+            <returns>退出时条件是否达成(没有达成的原因是超时)</returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.WaitUntil(System.Threading.CancellationToken,System.Func{System.Boolean},System.Func{System.Boolean},System.Int32,System.Int32)">
+            <summary>
+            在满足前提时,等待到条件成立或超时
+            </summary>
+            <returns>退出时条件是否达成(没有达成的原因是超时或前提已不成立)</returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoCycle(System.Threading.CancellationTokenSource,System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task},System.Int32,System.Int32)">
+            <summary>
+            执行循环任务
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="beforeTask">循环前任务,返回true表示取消循环</param>
+            <param name="cycleTask">循环任务体,返回true表示不再执行下一轮</param>
+            <param name="finallyTask">结束时的任务(一定会执行)</param>
+            <param name="Timeout">循环的超时时间(不包含循环前任务的耗时)。单位毫秒。0为不超时</param>
+            <param name="Interval">循环的间隔时间。单位毫秒。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoCycle(System.Threading.CancellationTokenSource,System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Action,System.Int32,System.Int32)">
+            <summary>
+            执行循环任务
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="beforeTask">循环前任务,返回true表示取消循环</param>
+            <param name="cycleTask">循环任务体,返回true表示不再执行下一轮</param>
+            <param name="finallyAction">结束时的任务(一定会执行)</param>
+            <param name="Timeout">循环的超时时间(不包含循环前任务的耗时)。单位毫秒。0为不超时</param>
+            <param name="Interval">循环的间隔时间。单位毫秒。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoCycle(System.Threading.CancellationTokenSource,System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task},System.Int32,System.Int32)">
+            <summary>
+            执行循环任务
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="beforeTask">循环前任务,返回true表示取消循环</param>
+            <param name="cycleFunc">循环任务体,返回true表示不再执行下一轮</param>
+            <param name="finallyTask">结束时的任务(一定会执行)</param>
+            <param name="Timeout">循环的超时时间(不包含循环前任务的耗时)。单位毫秒。0为不超时</param>
+            <param name="Interval">循环的间隔时间。单位毫秒。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoCycle(System.Threading.CancellationTokenSource,System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Boolean},System.Action,System.Int32,System.Int32)">
+            <summary>
+            执行循环任务
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="beforeTask">循环前任务,返回true表示取消循环</param>
+            <param name="cycleFunc">循环任务体,返回true表示不再执行下一轮</param>
+            <param name="finallyAction">结束时的任务(一定会执行)</param>
+            <param name="Timeout">循环的超时时间(不包含循环前任务的耗时)。单位毫秒。0为不超时</param>
+            <param name="Interval">循环的间隔时间。单位毫秒。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoCycle(System.Threading.CancellationTokenSource,System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task},System.Int32,System.Int32)">
+            <summary>
+            执行循环任务
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="beforeFunc">循环前任务,返回true表示取消循环</param>
+            <param name="cycleTask">循环任务体,返回true表示不再执行下一轮</param>
+            <param name="finallyTask">结束时的任务(一定会执行)</param>
+            <param name="Timeout">循环的超时时间(不包含循环前任务的耗时)。单位毫秒。0为不超时</param>
+            <param name="Interval">循环的间隔时间。单位毫秒。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoCycle(System.Threading.CancellationTokenSource,System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Action,System.Int32,System.Int32)">
+            <summary>
+            执行循环任务
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="beforeFunc">循环前任务,返回true表示取消循环</param>
+            <param name="cycleTask">循环任务体,返回true表示不再执行下一轮</param>
+            <param name="finallyAction">结束时的任务(一定会执行)</param>
+            <param name="Timeout">循环的超时时间(不包含循环前任务的耗时)。单位毫秒。0为不超时</param>
+            <param name="Interval">循环的间隔时间。单位毫秒。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoCycle(System.Threading.CancellationTokenSource,System.Func{System.Boolean},System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task},System.Int32,System.Int32)">
+            <summary>
+            执行循环任务
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="beforeFunc">循环前任务,返回true表示取消循环</param>
+            <param name="cycleFunc">循环任务体,返回true表示不再执行下一轮</param>
+            <param name="finallyTask">结束时的任务(一定会执行)</param>
+            <param name="Timeout">循环的超时时间(不包含循环前任务的耗时)。单位毫秒。0为不超时</param>
+            <param name="Interval">循环的间隔时间。单位毫秒。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoCycle(System.Threading.CancellationTokenSource,System.Func{System.Boolean},System.Func{System.Boolean},System.Action,System.Int32,System.Int32)">
+            <summary>
+            执行循环任务
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="beforeFunc">循环前任务,返回true表示取消循环</param>
+            <param name="cycleFunc">循环任务体,返回true表示不再执行下一轮</param>
+            <param name="finallyAction">结束时的任务(一定会执行)</param>
+            <param name="Timeout">循环的超时时间(不包含循环前任务的耗时)。单位毫秒。0为不超时</param>
+            <param name="Interval">循环的间隔时间。单位毫秒。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.WhileDo(System.Threading.CancellationTokenSource,System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到达成停止条件
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="stopCondition">停止条件,返回值为true后停止操作</param>
+            <param name="doTask">执行的操作,返回true表示执行了操作</param>
+            <param name="success">达成后的操作</param>
+            <param name="fail">最终未达成时的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否达成</returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.WhileDo(System.Threading.CancellationTokenSource,System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到达成停止条件
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="stopCondition">停止条件,返回值为true后停止操作</param>
+            <param name="doTask">执行的操作,返回true表示执行了操作</param>
+            <param name="success">达成后的操作</param>
+            <param name="fail">最终未达成时的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否达成</returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.WhileDo(System.Threading.CancellationTokenSource,System.Func{System.Boolean},System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到达成停止条件
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="stopCondition">停止条件,返回值为true后停止操作</param>
+            <param name="doFunc">执行的操作,返回true表示执行了操作</param>
+            <param name="success">达成后的操作</param>
+            <param name="fail">最终未达成时的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否达成</returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoUntil(System.Threading.CancellationTokenSource,System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到成功或超时
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="doTask">执行的操作,返回true表示执行了操作</param>
+            <param name="stopCondition">返回值为true后停止操作</param>
+            <param name="success">成功后的操作</param>
+            <param name="fail">失败后的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。0为不超时</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否操作成功</returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoUntil(System.Threading.CancellationTokenSource,System.Func{System.Threading.Tasks.Task{System.Boolean}},System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到成功或超时
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="doTask">执行的操作,返回true表示执行了操作</param>
+            <param name="stopCondition">返回值为true后停止操作</param>
+            <param name="success">成功后的操作</param>
+            <param name="fail">失败后的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。0为不超时</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否操作成功</returns>
+        </member>
+        <member name="M:Apq.Tasking.TaskHelper.DoUntil(System.Threading.CancellationTokenSource,System.Func{System.Boolean},System.Func{System.Boolean},System.Func{System.Threading.Tasks.Task},System.Action{System.Boolean},System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            重复执行指定的操作,直到成功或超时
+            </summary>
+            <param name="TokenSource">取消通知</param>
+            <param name="doFunc">执行的操作,返回true表示执行了操作</param>
+            <param name="stopCondition">返回值为true后停止操作</param>
+            <param name="success">成功后的操作</param>
+            <param name="fail">失败后的操作。超时时参数值为true。</param>
+            <param name="knit">操作失败时是否立即重做(即:true表示不等待循环间隔)</param>
+            <param name="Timeout">超时时间。单位毫秒。0为不超时</param>
+            <param name="Interval">循环操作的间隔时间。单位毫秒。</param>
+            <returns>是否操作成功</returns>
+        </member>
+        <member name="T:Apq.Tasking.TaskResult">
+            <summary>
+            表示任务结果
+            </summary>
+        </member>
+        <member name="P:Apq.Tasking.TaskResult.Task">
+            <summary>
+            哪个任务的结果
+            </summary>
+        </member>
+        <member name="P:Apq.Tasking.TaskResult.Success">
+            <summary>
+            是否成功
+            </summary>
+        </member>
+        <member name="P:Apq.Tasking.TaskResult.Message">
+            <summary>
+            错误信息或输出信息
+            </summary>
+        </member>
+        <member name="P:Apq.Tasking.TaskResult.Exception">
+            <summary>
+            异常
+            </summary>
+        </member>
+        <member name="P:Apq.Text.CsvTaskResult.FullFileNameWithoutExt_Pb">
+            <summary>
+            Pb文件完整路径(不含后缀)
+            </summary>
+        </member>
+        <member name="P:Apq.Text.CsvTaskResult.PbExt">
+            <summary>
+            Pb文件后缀(可以为空或.开头)
+            </summary>
+        </member>
+        <member name="P:Apq.Text.CsvTaskResult.HadReadCsv">
+            <summary>
+            有没有读取文件进行解析(只检查读取过的文件是否成功)
+            </summary>
+        </member>
+        <member name="P:Apq.Text.CsvTaskResult.ErrorCol">
+            <summary>
+            第几列出错
+            </summary>
+        </member>
+        <member name="P:Apq.Text.CsvTaskResult.ErrorColName">
+            <summary>
+            出错列名
+            </summary>
+        </member>
+        <member name="T:Apq.Text.TxtFileHelper">
+            <summary>
+            文本文件助手
+            </summary>
+        </member>
+        <member name="M:Apq.Text.TxtFileHelper.DetectEncoding(Apq.Text.TxtTaskResult,System.Single)">
+            <summary>
+            检测指定文本文件的编码格式
+            </summary>
+            <param name="result">要检测的文件及检测结果</param>
+            <param name="confidence">信心至少要达到该值才认为检测出了正确的文件编码</param>
+        </member>
+        <member name="M:Apq.Text.TxtFileHelper.ReadAllText(Apq.Text.TxtTaskResult,System.Single)">
+            <summary>
+            自动检测文件编码,并读取文件
+            </summary>
+            <param name="confidence">检测文件编码的最低信心</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.Text.TxtFileHelper.ConvertEncoding(Apq.Text.TxtTaskResult,System.Text.Encoding,System.Threading.CancellationToken,System.Single)">
+            <summary>
+            对指定的文本文件进行编码转换
+            </summary>
+            <param name="result">要转换的文件及转换结果</param>
+            <param name="encoding">转换为该编码</param>
+            <param name="token">取消令牌</param>
+            <param name="confidence">信心至少要达到该值才认为检测出了正确的文件编码,并进行转换</param>
+        </member>
+        <member name="T:Apq.Text.TxtTaskResult">
+            <summary>
+            表示对文本文件进行处理的结果
+            </summary>
+        </member>
+        <member name="P:Apq.Text.TxtTaskResult.FullFileNameWithoutExt">
+            <summary>
+            文本文件完整路径(不含后缀)
+            </summary>
+        </member>
+        <member name="P:Apq.Text.TxtTaskResult.FileNameWithoutExt">
+            <summary>
+            不含目录和后缀的文件名
+            </summary>
+        </member>
+        <member name="P:Apq.Text.TxtTaskResult.FileExt">
+            <summary>
+            文件后缀(可以为空或.开头)
+            </summary>
+        </member>
+        <member name="P:Apq.Text.TxtTaskResult.Encoding">
+            <summary>
+            文件编码格式(检测或转换后有值)
+            </summary>
+        </member>
+        <member name="P:Apq.Text.TxtTaskResult.LineCount">
+            <summary>
+            总行数
+            </summary>
+        </member>
+        <member name="P:Apq.Text.TxtTaskResult.ErrorLine">
+            <summary>
+            第几行出错
+            </summary>
+        </member>
+        <member name="T:Apq.TreeNode`1">
+            <summary>
+            树节点(没有上级就是根节点了)
+            </summary>
+        </member>
+        <member name="P:Apq.TreeNode`1.Data">
+            <summary>
+            节点的数据
+            </summary>
+        </member>
+        <member name="P:Apq.TreeNode`1.Parent">
+            <summary>
+            上级节点
+            </summary>
+        </member>
+        <member name="P:Apq.TreeNode`1.Children">
+            <summary>
+            子级节点
+            </summary>
+        </member>
+        <member name="P:Apq.TreeNode`1.LayerNo">
+            <summary>
+            当前节点算第几层
+            </summary>
+            <remarks>一般根节点设为第0层</remarks>
+        </member>
+        <member name="P:Apq.TreeNode`1.PreNode">
+            <summary>
+            上一节点
+            </summary>
+        </member>
+        <member name="P:Apq.TreeNode`1.NextNode">
+            <summary>
+            下一节点
+            </summary>
+        </member>
+        <member name="M:Apq.TreeNode`1.Walk_Depth(System.Action{Apq.TreeNode{`0},System.Int32})">
+            <summary>
+            深度优先遍历
+            </summary>
+            <param name="action">(节点,第几个节点)</param>
+        </member>
+        <member name="M:Apq.TreeNode`1.Walk_Depth_Imp(Apq.TreeNode{`0},System.Action{Apq.TreeNode{`0},System.Int32},Apq.TreeWalkWatcher)">
+            <summary>
+            [递归]深度优先遍历
+            </summary>
+            <param name="action">(节点,第几个节点)</param>
+        </member>
+        <member name="M:Apq.TreeNode`1.Walk_Breadth(System.Action{Apq.TreeNode{`0},System.Int32})">
+            <summary>
+            广度优先遍历
+            </summary>
+            <param name="action">(节点,第几个节点)</param>
+            <remarks>先深度遍历将结果保存到Dic中,再遍历Dic</remarks>
+        </member>
+        <member name="M:Apq.TreeNode`1.GetLeafs">
+            <summary>
+            获取所有叶子节点
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.TreeWalkWatcher">
+            <summary>
+            对树进行遍历时的监视者(观察者)
+            </summary>
+        </member>
+        <member name="P:Apq.TreeWalkWatcher.Count">
+            <summary>
+            第几次访问节点
+            </summary>
+        </member>
+        <member name="M:Apq.TxtFileEncoder.GetEncoding(System.String)">
+            <summary>
+            取得一个文本文件的编码方式。如果无法在文件头部找到有效的前导符,Encoding.Default将被返回。
+            </summary>
+            <param name="fileName">文件名。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.TxtFileEncoder.GetEncoding(System.IO.FileStream)">
+            <summary>
+            取得一个文本文件流的编码方式。
+            </summary>
+            <param name="stream">文本文件流。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.TxtFileEncoder.GetEncoding(System.String,System.Text.Encoding)">
+            <summary>
+            取得一个文本文件的编码方式。
+            </summary>
+            <param name="fileName">文件名。</param>
+            <param name="defaultEncoding">默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.TxtFileEncoder.GetEncoding(System.IO.FileStream,System.Text.Encoding)">
+            <summary>
+            取得一个文本文件流的编码方式。
+            </summary>
+            <param name="stream">文本文件流。</param>
+            <param name="defaultEncoding">默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。</param>
+            <returns></returns>
+        </member>
+        <member name="M:Apq.TxtFileEncoder.GetEncoding(System.IO.Stream)">
+            <summary>
+            通过给定的文件流,判断文件的编码类型
+            </summary>
+            <param name="fs">文件流</param>
+            <returns>文件的编码类型</returns>
+        </member>
+        <member name="M:Apq.TxtFileEncoder.IsUTF8Bytes(System.Byte[])">
+            <summary>
+            判断是否是不带 BOM 的 UTF8 格式
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Apq.TypeParser">
+            <summary>
+            C#类型解析,可解析关键字及其数组用法
+            </summary>
+        </member>
+        <member name="M:Apq.TypeParser.IsKeyword(System.String)">
+            <summary>
+            判断是否是C#关键字
+            </summary>
+        </member>
+        <member name="P:Apq.TypeParser.KeywordMappings">
+            <summary>
+            获取所有C#关键字与类型的对应关系
+            </summary>
+        </member>
+        <member name="M:Apq.TypeParser.TryGetType(System.String,System.Reflection.Assembly)">
+            <summary>
+            获取类型(含处理关键字)
+            </summary>
+        </member>
+        <member name="M:Apq.Utils.DateTimeUtil.GetMonday(System.DateTime,System.Boolean)">
+            <summary>
+            获取所在周的星期一
+            </summary>
+            <param name="timeZero">是否将Time部分置0</param>
+            <remarks>星期一为每周的第1天</remarks>
+        </member>
+        <member name="M:Apq.Utils.DateTimeUtil.GetSunday(System.DateTime,System.Boolean)">
+            <summary>
+            获取所在周的星期日
+            </summary>
+            <param name="timeZero">是否将Time部分置0</param>
+            <remarks>星期日为每周的第7天</remarks>
+        </member>
+        <member name="M:Apq.Utils.DateTimeUtil.GetFirstDayOfMonth(System.DateTime,System.Boolean)">
+            <summary>
+            获取所在月的第1天
+            </summary>
+            <param name="timeZero">是否将Time部分置0</param>
+            <remarks>1日为每月的第1天</remarks>
+        </member>
+        <member name="M:Apq.Utils.DateTimeUtil.GetLastDayOfMonth(System.DateTime,System.Boolean)">
+            <summary>
+            获取所在月的最后1天
+            </summary>
+            <param name="timeZero">是否将Time部分置0</param>
+        </member>
+        <member name="M:Apq.Utils.DateTimeUtil.CalcAgeByBirthday(System.DateOnly)">
+            <summary>
+            根据生日计算当前年龄
+            </summary>
+        </member>
+        <member name="T:Apq.Utils.NateScarlet_HolidayCn">
+            <summary>
+            使用 https://github.com/NateScarlet/holiday-cn.git 进行节假日判断
+            </summary>
+            <remarks>https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{年份}.json
+            https://fastly.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{年份}.json</remarks>
+        </member>
+        <member name="M:Apq.Utils.NateScarlet_HolidayCn.HolidayOfWeek(System.DateTime)">
+            <summary>
+            通过接口判断某天是不是中国法定节假日(如果接口访问失败,默认不是)
+            </summary>
+            <returns>1-7:星期几,10:法定休息日,11:法定工作日</returns>
+            <remarks>这个CDN是国外的,所以不定啥时间访问不了。
+            改成通过作业定时下载到本地,判断时直接通过本地缓存</remarks>
+        </member>
+        <member name="M:Apq.Utils.NateScarlet_HolidayCn.HolidayOfWeek(System.DateTime,System.Collections.Generic.IList{System.String})">
+            <summary>
+            判断某天是不是中国法定节假日(如果缓存文件不存在,默认不是)
+            </summary>
+            <param name="jsonFiles">本地缓存的json文件的绝对路径(如 D:\2024.json)</param>
+            <returns></returns>
+        </member>
+        <member name="P:Apq.Utils.Util.IsDebug">
+            <summary>
+            检查当前正在运行的主程序是否是在 Debug 配置下编译生成的。
+            </summary>
+        </member>
+        <member name="M:Apq.Utils.Util.GetCallingMethod">
+            <summary>
+            获取调用者(方法)
+            </summary>
+            <remarks>获取当前方法使用MethodBase.GetCurrentMethod()</remarks>
+        </member>
+        <member name="M:Apq.Utils.Util.ExchangeValue(System.Int64,System.Int64)">
+            <summary>
+            值对调
+            </summary>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Utils.Util.ExchangeValue(System.UInt64,System.UInt64)">
+            <summary>
+            值对调
+            </summary>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Utils.Util.ExchangeValue(System.Int32,System.Int32)">
+            <summary>
+            值对调
+            </summary>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Utils.Util.ExchangeValue(System.UInt32,System.UInt32)">
+            <summary>
+            值对调
+            </summary>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Utils.Util.ExchangeValue(System.Int16,System.Int16)">
+            <summary>
+            值对调
+            </summary>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Utils.Util.ExchangeValue(System.UInt16,System.UInt16)">
+            <summary>
+            值对调
+            </summary>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Utils.Util.ExchangeValue(System.SByte,System.SByte)">
+            <summary>
+            值对调
+            </summary>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Utils.Util.ExchangeValue(System.Byte,System.Byte)">
+            <summary>
+            值对调
+            </summary>
+            <param name="value1"></param>
+            <param name="value2"></param>
+        </member>
+        <member name="M:Apq.Utils.Util.IsEquals(System.Object,System.Object)">
+            <summary>
+            调用Equals方法判断是否相等
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.None">
+            <summary>
+            未定义
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.Monday">
+            <summary>
+            星期一
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.Tuesday">
+            <summary>
+            星期二
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.Wednesday">
+            <summary>
+            星期三
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.Thursday">
+            <summary>
+            星期四
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.Friday">
+            <summary>
+            星期五
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.Saturday">
+            <summary>
+            星期六
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.Sunday">
+            <summary>
+            星期日
+            </summary>
+        </member>
+        <member name="F:Apq.WeekDay.All">
+            <summary>
+            星期内每天
+            </summary>
+        </member>
+        <member name="P:AutoIt.Common.TextEncodingDetect.NullSuggestsBinary">
+            <summary>
+                Sets if the presence of nulls in a buffer indicate the buffer is binary data rather than text.
+            </summary>
+        </member>
+        <member name="M:AutoIt.Common.TextEncodingDetect.GetBomLengthFromEncodingMode(AutoIt.Common.TextEncodingDetect.Encoding)">
+            <summary>
+                Gets the BOM length for a given Encoding mode.
+            </summary>
+            <param name="encoding"></param>
+            <returns>The BOM length.</returns>
+        </member>
+        <member name="M:AutoIt.Common.TextEncodingDetect.CheckBom(System.Byte[],System.Int32)">
+            <summary>
+                Checks for a BOM sequence in a byte buffer.
+            </summary>
+            <param name="buffer"></param>
+            <param name="size"></param>
+            <returns>Encoding type or Encoding.None if no BOM.</returns>
+        </member>
+        <member name="M:AutoIt.Common.TextEncodingDetect.DetectEncoding(System.Byte[],System.Int32)">
+            <summary>
+                Automatically detects the Encoding type of a given byte buffer.
+            </summary>
+            <param name="buffer">The byte buffer.</param>
+            <param name="size">The size of the byte buffer.</param>
+            <returns>The Encoding type or Encoding.None if unknown.</returns>
+        </member>
+        <member name="M:AutoIt.Common.TextEncodingDetect.CheckUtf16NewlineChars(System.Byte[],System.Int32)">
+            <summary>
+                Checks if a buffer contains text that looks like utf16 by scanning for
+                newline chars that would be present even in non-english text.
+            </summary>
+            <param name="buffer">The byte buffer.</param>
+            <param name="size">The size of the byte buffer.</param>
+            <returns>Encoding.none, Encoding.Utf16LeNoBom or Encoding.Utf16BeNoBom.</returns>
+        </member>
+        <member name="M:AutoIt.Common.TextEncodingDetect.DoesContainNulls(System.Byte[],System.Int32)">
+            <summary>
+            Checks if a buffer contains any nulls. Used to check for binary vs text data.
+            </summary>
+            <param name="buffer">The byte buffer.</param>
+            <param name="size">The size of the byte buffer.</param>
+        </member>
+        <member name="M:AutoIt.Common.TextEncodingDetect.CheckUtf16Ascii(System.Byte[],System.Int32)">
+            <summary>
+                Checks if a buffer contains text that looks like utf16. This is done based
+                on the use of nulls which in ASCII/script like text can be useful to identify.
+            </summary>
+            <param name="buffer">The byte buffer.</param>
+            <param name="size">The size of the byte buffer.</param>
+            <returns>Encoding.none, Encoding.Utf16LeNoBom or Encoding.Utf16BeNoBom.</returns>
+        </member>
+        <member name="M:AutoIt.Common.TextEncodingDetect.CheckUtf8(System.Byte[],System.Int32)">
+            <summary>
+                Checks if a buffer contains valid utf8.
+            </summary>
+            <param name="buffer">The byte buffer.</param>
+            <param name="size">The size of the byte buffer.</param>
+            <returns>
+                Encoding type of Encoding.None (invalid UTF8), Encoding.Utf8NoBom (valid utf8 multibyte strings) or
+                Encoding.ASCII (data in 0.127 range).
+            </returns>
+            <returns>2</returns>
+        </member>
+    </members>
+</doc>

+ 1 - 0
Wfj/GsProxy/Config/00_配置目录.json

@@ -0,0 +1 @@
+用户配置目录

BIN
Wfj/GsProxy/ConsoleTables.dll


+ 26 - 0
Wfj/GsProxy/DefaultConfig/AppConfig.json

@@ -0,0 +1,26 @@
+{
+	"WsListen": "0.0.0.0:45800",
+	"PathBase": "/GsProxy",
+	// 加载dll时查找哪些文件夹(相对路径,起点是程序所在目录)
+	"ProbeDirs": null,
+	"WebSocketClient": {
+		// 每次接收最多接收多少数据(KB)(因为要预分配内存,所以不能太大)
+		"ReceiveBufferSize": 1024,
+		// 客户端最大空闲时长(秒),超过则视为断开。一般取 >(2 * 客户端心跳间隔时长[推荐为5])
+		"Timeout_Idle": 15
+	},
+	"ActorTcp": {
+		// 单次连接(不含登录)的超时时长(秒)(局域网或本机环境,5秒就够长了)
+		"ConnectTimeout": 5,
+		// 登录的超时时长(秒)(需要与客户端配合,10秒应该就够长了)
+		"LoginTimeout": 10,
+		// 心跳检测的间隔时长(秒)
+		"Interval_HeartBeat": 20,
+		// 最大空闲时长(秒),超过则视为断开。一般取 >(2 * Interval_HeartBeat)
+		"Timeout_Idle": 50
+	},
+	"ActorMgr": {
+		// 角色下线后延时删除连接以确保角色不会多次登录(秒)
+		"DelayAfterLogout": 10
+	}
+}

+ 154 - 0
Wfj/GsProxy/DefaultConfig/log4net.config

@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+	<configSections>
+		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
+	</configSections>
+	<log4net>
+		<!-- 滚动日志文件 -->
+		<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
+			<!--记录日志写入文件时,不锁定文本文件-->
+			<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
+			<!--使用utf-8编码-->
+			<encoding value="utf-8" />
+			<!--日志文件目录-->
+			<param name= "File" value= "../logs/GsProxy/"/>
+			<!--是否是向文件中追加日志-->
+			<param name= "AppendToFile" value= "true"/>
+			<!--log保留天数(-1则为全保留)-->
+			<param name= "MaxSizeRollBackups" value= "30"/>
+			<!--日志文件名是否是固定不变的-->
+			<param name= "StaticLogFileName" value= "false"/>
+			<!--日志文件名格式为:20080831.log-->
+			<param name= "DatePattern" value= "yyyyMMdd&quot;.log&quot;"/>
+			<!--日志根据日期滚动-->
+			<param name= "RollingStyle" value= "Date"/>
+			<layout type="log4net.Layout.PatternLayout">
+				<param name="ConversionPattern" value="******************************************************************************************%newline%date{yyyy-MM-dd HH:mm:ss.fff}%newline%level%newline%message%newline******************************************************************************************%newline%newline" />
+			</layout>
+		</appender>
+		<appender name="EFRollingFileAppender" type="log4net.Appender.RollingFileAppender">
+			<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
+			<param name="Encoding" value="utf-8" />
+			<param name= "File" value= "../logs/GsProxy/"/>
+			<param name= "AppendToFile" value= "true"/>
+			<param name= "MaxSizeRollBackups" value= "30"/>
+			<param name= "StaticLogFileName" value= "false"/>
+			<param name= "DatePattern" value= "yyyyMMdd&quot;-Sql.log&quot;"/>
+			<!--日志根据日期滚动-->
+			<param name= "RollingStyle" value= "Date"/>
+			<layout type="log4net.Layout.PatternLayout">
+				<param name="ConversionPattern" value="******************************************************************************************%newline%date{yyyy-MM-dd HH:mm:ss.fff}%newline%level%newline%message%newline******************************************************************************************%newline%newline" />
+			</layout>
+		</appender>
+
+		<!-- MsSql
+CREATE TABLE [log4net].[Log](
+	 [LogID] [bigint]  NOT NULL IDENTITY(1,1)
+	,[AppID] [int]  NOT NULL CONSTRAINT [DF_Log_AppID] DEFAULT ((0))
+	,[LogTime] [datetime]  NOT NULL CONSTRAINT [DF_Log_LogTime] DEFAULT (getdate())
+	,[Thread] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_Log_Thread] DEFAULT ('')
+	,[Severity] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_Log_Severity] DEFAULT ('')
+	,[Logger] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_Log_Logger] DEFAULT ('')
+	,[Msg] [nvarchar] (max) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_Log_Msg] DEFAULT ('')
+	,[Exception] [nvarchar] (max) COLLATE Chinese_PRC_CI_AS NULL
+	,[CrtTime] [datetime]  NOT NULL CONSTRAINT [DF_Log_CrtTime] DEFAULT (getdate())
+	,[LogLevel] AS (case [Severity] when 'ALL' then (0) when 'FINEST' then (10000) when 'TRACE' then (20000) when 'DEBUG' then (30000) when 'INFO' then (40000) when 'NOTICE' then (50000) when 'WARN' then (60000) when 'EXCEPTION' then (65000) when 'ERROR' then (70000) when 'SEVERE' then (80000) when 'CRITICAL' then (90000) when 'ALERT' then (100000) when 'FATAL' then (110000) when 'EMERGENCY' then (120000) else (2147483647) end) PERSISTED
+)
+;
+
+CREATE CLUSTERED INDEX [CX_Log] ON [log4net].[Log]([LogTime]) WITH(PAD_INDEX=OFF);
+
+ALTER TABLE [log4net].[Log] ADD CONSTRAINT [PK_Log] PRIMARY KEY NONCLUSTERED([LogID]) WITH(PAD_INDEX=OFF);
+
+CREATE INDEX [IX_Log:AppID] ON [log4net].[Log]([AppID]) WITH(PAD_INDEX=OFF);
+
+CREATE INDEX [IX_Log:LogLevel] ON [log4net].[Log]([LogLevel]) WITH(PAD_INDEX=OFF);
+
+EXEC sp_addextendedproperty N'MS_Description', N'应用编号', N'SCHEMA', N'log4net', N'TABLE', N'Log', N'COLUMN', N'AppID';
+
+EXEC sp_addextendedproperty N'MS_Description', N'产生日志的时间', N'SCHEMA', N'log4net', N'TABLE', N'Log', N'COLUMN', N'LogTime';
+
+EXEC sp_addextendedproperty N'MS_Description', N'线程', N'SCHEMA', N'log4net', N'TABLE', N'Log', N'COLUMN', N'Thread';
+
+EXEC sp_addextendedproperty N'MS_Description', N'严重度', N'SCHEMA', N'log4net', N'TABLE', N'Log', N'COLUMN', N'Severity';
+
+EXEC sp_addextendedproperty N'MS_Description', N'日志器', N'SCHEMA', N'log4net', N'TABLE', N'Log', N'COLUMN', N'Logger';
+
+EXEC sp_addextendedproperty N'MS_Description', N'错误信息', N'SCHEMA', N'log4net', N'TABLE', N'Log', N'COLUMN', N'Msg';
+
+EXEC sp_addextendedproperty N'MS_Description', N'异常信息', N'SCHEMA', N'log4net', N'TABLE', N'Log', N'COLUMN', N'Exception';
+
+EXEC sp_addextendedproperty N'MS_Description', N'写入到表的时间', N'SCHEMA', N'log4net', N'TABLE', N'Log', N'COLUMN', N'CrtTime';
+
+		-->
+		<appender name="MsSqlAppender" type="log4net.Appender.AdoNetAppender">
+			<!-- 待缓存达到指定行数后再写入数据库 -->
+			<!--<bufferSize value="100" />-->
+			<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+			<connectionString value="data source=.,38032;initial catalog=DSLog;integrated security=false;persist security info=True;User ID=Web;Password=aYWR8f2eEc6_u1Jn" />
+			<commandText value="INSERT INTO [log4net].[Log]([AppID], [LogTime],[Thread],[Severity],[Logger],[Msg],[Exception]) VALUES (8, @LogTime, @Thread, @Severity, @Logger, @Msg, @Exception)" />
+			<parameter>
+				<parameterName value="@LogTime" />
+				<dbType value="DateTime" />
+				<layout type="log4net.Layout.RawTimeStampLayout" />
+			</parameter>
+			<parameter>
+				<parameterName value="@Thread" />
+				<dbType value="String" />
+				<size value="255" />
+				<layout type="log4net.Layout.PatternLayout">
+					<conversionPattern value="%thread" />
+				</layout>
+			</parameter>
+			<parameter>
+				<parameterName value="@Severity" />
+				<dbType value="String" />
+				<size value="50" />
+				<layout type="log4net.Layout.PatternLayout">
+					<conversionPattern value="%level" />
+				</layout>
+			</parameter>
+			<parameter>
+				<parameterName value="@Logger" />
+				<dbType value="String" />
+				<size value="255" />
+				<layout type="log4net.Layout.PatternLayout">
+					<conversionPattern value="%logger" />
+				</layout>
+			</parameter>
+			<parameter>
+				<parameterName value="@Msg" />
+				<dbType value="String" />
+				<size value="-1" />
+				<layout type="log4net.Layout.PatternLayout">
+					<conversionPattern value="%message" />
+				</layout>
+			</parameter>
+			<parameter>
+				<parameterName value="@Exception" />
+				<dbType value="String" />
+				<size value="-1" />
+				<layout type="log4net.Layout.ExceptionLayout" />
+			</parameter>
+		</appender>
+
+		<logger name="RollingFileLogger">
+			<!--(低)ALL(0) < FINEST(10000) < TRACE(20000) < DEBUG(30000) < INFO(40000) < NOTICE(50000) < WARN(60000) < ERROR(70000) < SEVERE(80000) < CRITICAL(90000) < ALERT(100000) < FATAL(110000) < EMERGENCY(120000) < (高)OFF[不记录](2147483647) -->
+			<level value="TRACE"/>
+			<appender-ref ref="RollingFileAppender"/>
+			<appender-ref ref="MsSqlAppender"/>
+		</logger>
+
+		<logger name="EFRollingFileLogger">
+			<!--(低)ALL(0) < FINEST(10000) < TRACE(20000) < DEBUG(30000) < INFO(40000) < NOTICE(50000) < WARN(60000) < ERROR(70000) < SEVERE(80000) < CRITICAL(90000) < ALERT(100000) < FATAL(110000) < EMERGENCY(120000) < (高)OFF[不记录](2147483647) -->
+			<level value="TRACE"/>
+			<appender-ref ref="EFRollingFileAppender"/>
+			<!--<appender-ref ref="MsSqlAppender"/>-->
+		</logger>
+
+		<logger name="MsSqlLogger">
+			<level value="OFF"/>
+			<appender-ref ref="MsSqlAppender"/>
+		</logger>
+	</log4net>
+</configuration>

BIN
Wfj/GsProxy/Fleck.dll


BIN
Wfj/GsProxy/Google.Protobuf.dll


BIN
Wfj/GsProxy/Grpc.AspNetCore.Server.ClientFactory.dll


BIN
Wfj/GsProxy/Grpc.AspNetCore.Server.Reflection.dll


BIN
Wfj/GsProxy/Grpc.AspNetCore.Server.dll


BIN
Wfj/GsProxy/Grpc.AspNetCore.Web.dll


BIN
Wfj/GsProxy/Grpc.Core.Api.dll


BIN
Wfj/GsProxy/Grpc.Net.Client.dll


BIN
Wfj/GsProxy/Grpc.Net.ClientFactory.dll


BIN
Wfj/GsProxy/Grpc.Net.Common.dll


BIN
Wfj/GsProxy/Grpc.Reflection.dll


+ 623 - 0
Wfj/GsProxy/GsProxy.deps.json

@@ -0,0 +1,623 @@
+{
+  "runtimeTarget": {
+    "name": ".NETCoreApp,Version=v8.0",
+    "signature": ""
+  },
+  "compilationOptions": {},
+  "targets": {
+    ".NETCoreApp,Version=v8.0": {
+      "GsProxy/1.0.0": {
+        "dependencies": {
+          "ConsoleTables": "2.6.1",
+          "Fleck": "1.2.0",
+          "Google.Protobuf": "3.26.0",
+          "Grpc.AspNetCore": "2.61.0",
+          "Grpc.AspNetCore.Server.Reflection": "2.61.0",
+          "Grpc.AspNetCore.Web": "2.61.0",
+          "Newtonsoft.Json": "13.0.3",
+          "System.CommandLine": "2.0.0-beta4.22272.1",
+          "log4net": "2.0.16",
+          "protobuf-net": "3.2.30",
+          "Apq": "1.0.0.0",
+          "Apq.Web5": "1.0.0.0"
+        },
+        "runtime": {
+          "GsProxy.dll": {}
+        }
+      },
+      "ConsoleTables/2.6.1": {
+        "runtime": {
+          "lib/netstandard2.1/ConsoleTables.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.6.1.0"
+          }
+        }
+      },
+      "Fleck/1.2.0": {
+        "runtime": {
+          "lib/netcoreapp2.0/Fleck.dll": {
+            "assemblyVersion": "1.2.0.0",
+            "fileVersion": "1.2.0.0"
+          }
+        }
+      },
+      "Google.Protobuf/3.26.0": {
+        "runtime": {
+          "lib/net5.0/Google.Protobuf.dll": {
+            "assemblyVersion": "3.26.0.0",
+            "fileVersion": "3.26.0.0"
+          }
+        }
+      },
+      "Grpc.AspNetCore/2.61.0": {
+        "dependencies": {
+          "Google.Protobuf": "3.26.0",
+          "Grpc.AspNetCore.Server.ClientFactory": "2.61.0",
+          "Grpc.Tools": "2.61.0"
+        }
+      },
+      "Grpc.AspNetCore.Server/2.61.0": {
+        "dependencies": {
+          "Grpc.Net.Common": "2.61.0"
+        },
+        "runtime": {
+          "lib/net8.0/Grpc.AspNetCore.Server.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.AspNetCore.Server.ClientFactory/2.61.0": {
+        "dependencies": {
+          "Grpc.AspNetCore.Server": "2.61.0",
+          "Grpc.Net.ClientFactory": "2.61.0"
+        },
+        "runtime": {
+          "lib/net8.0/Grpc.AspNetCore.Server.ClientFactory.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.AspNetCore.Server.Reflection/2.61.0": {
+        "dependencies": {
+          "Google.Protobuf": "3.26.0",
+          "Grpc.AspNetCore.Server": "2.61.0",
+          "Grpc.Reflection": "2.61.0"
+        },
+        "runtime": {
+          "lib/net8.0/Grpc.AspNetCore.Server.Reflection.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.AspNetCore.Web/2.61.0": {
+        "runtime": {
+          "lib/net8.0/Grpc.AspNetCore.Web.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.Core.Api/2.61.0": {
+        "runtime": {
+          "lib/netstandard2.1/Grpc.Core.Api.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.Net.Client/2.61.0": {
+        "dependencies": {
+          "Grpc.Net.Common": "2.61.0",
+          "Microsoft.Extensions.Logging.Abstractions": "6.0.0"
+        },
+        "runtime": {
+          "lib/net8.0/Grpc.Net.Client.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.Net.ClientFactory/2.61.0": {
+        "dependencies": {
+          "Grpc.Net.Client": "2.61.0",
+          "Microsoft.Extensions.Http": "6.0.0"
+        },
+        "runtime": {
+          "lib/net8.0/Grpc.Net.ClientFactory.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.Net.Common/2.61.0": {
+        "dependencies": {
+          "Grpc.Core.Api": "2.61.0"
+        },
+        "runtime": {
+          "lib/net8.0/Grpc.Net.Common.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.Reflection/2.61.0": {
+        "dependencies": {
+          "Google.Protobuf": "3.26.0",
+          "Grpc.Core.Api": "2.61.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Grpc.Reflection.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.61.0.0"
+          }
+        }
+      },
+      "Grpc.Tools/2.61.0": {},
+      "log4net/2.0.16": {
+        "dependencies": {
+          "System.Configuration.ConfigurationManager": "4.5.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/log4net.dll": {
+            "assemblyVersion": "2.0.16.0",
+            "fileVersion": "2.0.16.0"
+          }
+        }
+      },
+      "Microsoft.Extensions.DependencyInjection/6.0.0": {
+        "dependencies": {
+          "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+          "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+        }
+      },
+      "Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {},
+      "Microsoft.Extensions.Http/6.0.0": {
+        "dependencies": {
+          "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+          "Microsoft.Extensions.Logging": "6.0.0",
+          "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
+          "Microsoft.Extensions.Options": "6.0.0"
+        }
+      },
+      "Microsoft.Extensions.Logging/6.0.0": {
+        "dependencies": {
+          "Microsoft.Extensions.DependencyInjection": "6.0.0",
+          "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+          "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
+          "Microsoft.Extensions.Options": "6.0.0",
+          "System.Diagnostics.DiagnosticSource": "6.0.0"
+        }
+      },
+      "Microsoft.Extensions.Logging.Abstractions/6.0.0": {},
+      "Microsoft.Extensions.Options/6.0.0": {
+        "dependencies": {
+          "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
+          "Microsoft.Extensions.Primitives": "6.0.0"
+        }
+      },
+      "Microsoft.Extensions.Primitives/6.0.0": {
+        "dependencies": {
+          "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+        }
+      },
+      "Microsoft.NETCore.Platforms/2.0.0": {},
+      "Newtonsoft.Json/13.0.3": {
+        "runtime": {
+          "lib/net6.0/Newtonsoft.Json.dll": {
+            "assemblyVersion": "13.0.0.0",
+            "fileVersion": "13.0.3.27908"
+          }
+        }
+      },
+      "protobuf-net/3.2.30": {
+        "dependencies": {
+          "protobuf-net.Core": "3.2.30"
+        },
+        "runtime": {
+          "lib/net6.0/protobuf-net.dll": {
+            "assemblyVersion": "3.0.0.0",
+            "fileVersion": "3.2.30.709"
+          }
+        }
+      },
+      "protobuf-net.Core/3.2.30": {
+        "dependencies": {
+          "System.Collections.Immutable": "7.0.0"
+        },
+        "runtime": {
+          "lib/net6.0/protobuf-net.Core.dll": {
+            "assemblyVersion": "3.0.0.0",
+            "fileVersion": "3.2.30.709"
+          }
+        }
+      },
+      "System.Collections.Immutable/7.0.0": {},
+      "System.CommandLine/2.0.0-beta4.22272.1": {
+        "runtime": {
+          "lib/net6.0/System.CommandLine.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.0.22.27201"
+          }
+        },
+        "resources": {
+          "lib/net6.0/cs/System.CommandLine.resources.dll": {
+            "locale": "cs"
+          },
+          "lib/net6.0/de/System.CommandLine.resources.dll": {
+            "locale": "de"
+          },
+          "lib/net6.0/es/System.CommandLine.resources.dll": {
+            "locale": "es"
+          },
+          "lib/net6.0/fr/System.CommandLine.resources.dll": {
+            "locale": "fr"
+          },
+          "lib/net6.0/it/System.CommandLine.resources.dll": {
+            "locale": "it"
+          },
+          "lib/net6.0/ja/System.CommandLine.resources.dll": {
+            "locale": "ja"
+          },
+          "lib/net6.0/ko/System.CommandLine.resources.dll": {
+            "locale": "ko"
+          },
+          "lib/net6.0/pl/System.CommandLine.resources.dll": {
+            "locale": "pl"
+          },
+          "lib/net6.0/pt-BR/System.CommandLine.resources.dll": {
+            "locale": "pt-BR"
+          },
+          "lib/net6.0/ru/System.CommandLine.resources.dll": {
+            "locale": "ru"
+          },
+          "lib/net6.0/tr/System.CommandLine.resources.dll": {
+            "locale": "tr"
+          },
+          "lib/net6.0/zh-Hans/System.CommandLine.resources.dll": {
+            "locale": "zh-Hans"
+          },
+          "lib/net6.0/zh-Hant/System.CommandLine.resources.dll": {
+            "locale": "zh-Hant"
+          }
+        }
+      },
+      "System.Configuration.ConfigurationManager/4.5.0": {
+        "dependencies": {
+          "System.Security.Cryptography.ProtectedData": "4.5.0",
+          "System.Security.Permissions": "4.5.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll": {
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "4.6.26515.6"
+          }
+        }
+      },
+      "System.Diagnostics.DiagnosticSource/6.0.0": {
+        "dependencies": {
+          "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+        }
+      },
+      "System.Runtime.CompilerServices.Unsafe/6.0.0": {},
+      "System.Security.AccessControl/4.5.0": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "2.0.0",
+          "System.Security.Principal.Windows": "4.5.0"
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "runtime": {
+          "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
+            "assemblyVersion": "4.0.3.0",
+            "fileVersion": "4.6.26515.6"
+          }
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
+            "rid": "win",
+            "assetType": "runtime",
+            "assemblyVersion": "4.0.3.0",
+            "fileVersion": "4.6.26515.6"
+          }
+        }
+      },
+      "System.Security.Permissions/4.5.0": {
+        "dependencies": {
+          "System.Security.AccessControl": "4.5.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/System.Security.Permissions.dll": {
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "4.6.26515.6"
+          }
+        }
+      },
+      "System.Security.Principal.Windows/4.5.0": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "2.0.0"
+        }
+      },
+      "Apq/1.0.0.0": {
+        "runtime": {
+          "Apq.dll": {
+            "assemblyVersion": "1.0.0.0",
+            "fileVersion": "1.0.0.0"
+          }
+        }
+      },
+      "Apq.Web5/1.0.0.0": {
+        "runtime": {
+          "Apq.Web5.dll": {
+            "assemblyVersion": "1.0.0.0",
+            "fileVersion": "1.0.0.0"
+          }
+        }
+      }
+    }
+  },
+  "libraries": {
+    "GsProxy/1.0.0": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "ConsoleTables/2.6.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-TyU885plpk88kMxgayy5+QQvtt/t3ZR45+vSvaKqZiaK+YsGVE6Mv7sV3fwjUMv3jHT15DdkpxW/+o+uc+bAJQ==",
+      "path": "consoletables/2.6.1",
+      "hashPath": "consoletables.2.6.1.nupkg.sha512"
+    },
+    "Fleck/1.2.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-bPLXn6QbLAFoviur6XbrKB0Zn6x04E8VibHXyHZeJsoC7bkUl5DVtzM5cZgDuqHkIrBqAXJyTNJwSNIc6wBJ2Q==",
+      "path": "fleck/1.2.0",
+      "hashPath": "fleck.1.2.0.nupkg.sha512"
+    },
+    "Google.Protobuf/3.26.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-AkWr2Hz/rycJapYHXS3gT5UVq8K8D2gkNA70ePe22oejNVGMkw5Mtasri2VbNtBCgbqtE8MsIPYp73xud2wAVQ==",
+      "path": "google.protobuf/3.26.0",
+      "hashPath": "google.protobuf.3.26.0.nupkg.sha512"
+    },
+    "Grpc.AspNetCore/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-KMU0H2LDRUkt1GavPSaGYZdSgtvlHdwP0ioZqg8eELHqaU7ksLN3Z8vF963hRZRyK/SjWs+xb7Q8doJ5gkOE6Q==",
+      "path": "grpc.aspnetcore/2.61.0",
+      "hashPath": "grpc.aspnetcore.2.61.0.nupkg.sha512"
+    },
+    "Grpc.AspNetCore.Server/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-Dt8RuE8lPZ2O+J4ACaDwqLaY5IUQAkkHgockKm1p+DLarYmYNT3ckN5J+beM9heBV0I0ZLweqjZdoo11BMVauw==",
+      "path": "grpc.aspnetcore.server/2.61.0",
+      "hashPath": "grpc.aspnetcore.server.2.61.0.nupkg.sha512"
+    },
+    "Grpc.AspNetCore.Server.ClientFactory/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-fD3/MxJkZIB35vwHWH/I6QgmZcoZHu9q9/vw9jFOUsB2qyy25OtYT8c22Z/UpUrsymVKXR+NKUKpmEFReW9GCw==",
+      "path": "grpc.aspnetcore.server.clientfactory/2.61.0",
+      "hashPath": "grpc.aspnetcore.server.clientfactory.2.61.0.nupkg.sha512"
+    },
+    "Grpc.AspNetCore.Server.Reflection/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-OAdqsvtmzKvBZp+DUKZZwGVF3eMMImZXBiUMVQAqVktSfPSCjgM2EMQw8Spg8wPPUev0jkcg8yciEpbGwFbwnA==",
+      "path": "grpc.aspnetcore.server.reflection/2.61.0",
+      "hashPath": "grpc.aspnetcore.server.reflection.2.61.0.nupkg.sha512"
+    },
+    "Grpc.AspNetCore.Web/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-WWORonCGXHS2T5Xotk/aKygnVmyiVLuc41BB6KqF+5dLTvJaXzy+91kXQLRJqr37csYEzJ0vFFHvV3DsBm0Sfw==",
+      "path": "grpc.aspnetcore.web/2.61.0",
+      "hashPath": "grpc.aspnetcore.web.2.61.0.nupkg.sha512"
+    },
+    "Grpc.Core.Api/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-FFHazRC4SVRpeYzHudZVLTmETfweFaihQZ9xcxbny21MKaz3mmbH8d26bcJ8clCufTYoCxav6nz1moyoxJ+olw==",
+      "path": "grpc.core.api/2.61.0",
+      "hashPath": "grpc.core.api.2.61.0.nupkg.sha512"
+    },
+    "Grpc.Net.Client/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-/H4WMyzoTKVBE31PaCG76c/29YTpBeP8W1Vh9of7ykmi8Iw9SlZTm+8quZ35DzRkORZSV6T8CvYPwCVxJzTUKA==",
+      "path": "grpc.net.client/2.61.0",
+      "hashPath": "grpc.net.client.2.61.0.nupkg.sha512"
+    },
+    "Grpc.Net.ClientFactory/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-0DB7+22B0jIVhmnBQwm/EoSiKwThAtc9PznB3P7tfPaEOJH3Fwff1j4Ch2ITY43e7Gg/M+idxLRwXWzZYoNIIQ==",
+      "path": "grpc.net.clientfactory/2.61.0",
+      "hashPath": "grpc.net.clientfactory.2.61.0.nupkg.sha512"
+    },
+    "Grpc.Net.Common/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-7htYm01A2GCNFq6iamv1NjPycs0nslsYrDD01VAy71k8aSDISBklGJwH7iXZ+ScHdhz+qE0WVvZYVTFsfMPZzQ==",
+      "path": "grpc.net.common/2.61.0",
+      "hashPath": "grpc.net.common.2.61.0.nupkg.sha512"
+    },
+    "Grpc.Reflection/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-GjRQO3kpTvcgHa2NhzNADQz3m9nUTMNie+crTdkyIpx0Vyk2jt2fA5f+6xvD/r4ShxoQmnKg112jweNhRxsTPg==",
+      "path": "grpc.reflection/2.61.0",
+      "hashPath": "grpc.reflection.2.61.0.nupkg.sha512"
+    },
+    "Grpc.Tools/2.61.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-NwrF+hn8QC5gE7LE3szHEzFWQKisV5tmncitPtWurO58XDINLYzqoDeNczxX3OT/zuSDqcwzisw0Qo4KSzILxQ==",
+      "path": "grpc.tools/2.61.0",
+      "hashPath": "grpc.tools.2.61.0.nupkg.sha512"
+    },
+    "log4net/2.0.16": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-6MoFh1BB83ZPiUHXlIJQZsoXSMlwnrNHmiPTGCobA6Ik3fmeNVLgEwF0MjxZtec2PfB0WdL81XCAtxjrummCCg==",
+      "path": "log4net/2.0.16",
+      "hashPath": "log4net.2.0.16.nupkg.sha512"
+    },
+    "Microsoft.Extensions.DependencyInjection/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
+      "path": "microsoft.extensions.dependencyinjection/6.0.0",
+      "hashPath": "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
+      "path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
+      "hashPath": "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Http/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-15+pa2G0bAMHbHewaQIdr/y6ag2H3yh4rd9hTXavtWDzQBkvpe2RMqFg8BxDpcQWssmjmBApGPcw93QRz6YcMg==",
+      "path": "microsoft.extensions.http/6.0.0",
+      "hashPath": "microsoft.extensions.http.6.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Logging/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
+      "path": "microsoft.extensions.logging/6.0.0",
+      "hashPath": "microsoft.extensions.logging.6.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Logging.Abstractions/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
+      "path": "microsoft.extensions.logging.abstractions/6.0.0",
+      "hashPath": "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Options/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
+      "path": "microsoft.extensions.options/6.0.0",
+      "hashPath": "microsoft.extensions.options.6.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Primitives/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
+      "path": "microsoft.extensions.primitives/6.0.0",
+      "hashPath": "microsoft.extensions.primitives.6.0.0.nupkg.sha512"
+    },
+    "Microsoft.NETCore.Platforms/2.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-VdLJOCXhZaEMY7Hm2GKiULmn7IEPFE4XC5LPSfBVCUIA8YLZVh846gtfBJalsPQF2PlzdD7ecX7DZEulJ402ZQ==",
+      "path": "microsoft.netcore.platforms/2.0.0",
+      "hashPath": "microsoft.netcore.platforms.2.0.0.nupkg.sha512"
+    },
+    "Newtonsoft.Json/13.0.3": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+      "path": "newtonsoft.json/13.0.3",
+      "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
+    },
+    "protobuf-net/3.2.30": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-C/UTlmxEJHAHpqm8xQK1UyJKaIynVCSNG4mVrbLgnZ7ccH28nN49O8iMJvKEodTgVbnimvy+3mIiAdW6mATwnw==",
+      "path": "protobuf-net/3.2.30",
+      "hashPath": "protobuf-net.3.2.30.nupkg.sha512"
+    },
+    "protobuf-net.Core/3.2.30": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-v2ZxxYrz+X212ukSx+uqkLuPu414bvmSAnTyf+PBUKR9ENJxO4P/csorA/27456MCp1JNoMssDj/f91RDiwBfQ==",
+      "path": "protobuf-net.core/3.2.30",
+      "hashPath": "protobuf-net.core.3.2.30.nupkg.sha512"
+    },
+    "System.Collections.Immutable/7.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
+      "path": "system.collections.immutable/7.0.0",
+      "hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
+    },
+    "System.CommandLine/2.0.0-beta4.22272.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-1uqED/q2H0kKoLJ4+hI2iPSBSEdTuhfCYADeJrAqERmiGQ2NNacYKRNEQ+gFbU4glgVyK8rxI+ZOe1onEtr/Pg==",
+      "path": "system.commandline/2.0.0-beta4.22272.1",
+      "hashPath": "system.commandline.2.0.0-beta4.22272.1.nupkg.sha512"
+    },
+    "System.Configuration.ConfigurationManager/4.5.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-UIFvaFfuKhLr9u5tWMxmVoDPkFeD+Qv8gUuap4aZgVGYSYMdERck4OhLN/2gulAc0nYTEigWXSJNNWshrmxnng==",
+      "path": "system.configuration.configurationmanager/4.5.0",
+      "hashPath": "system.configuration.configurationmanager.4.5.0.nupkg.sha512"
+    },
+    "System.Diagnostics.DiagnosticSource/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
+      "path": "system.diagnostics.diagnosticsource/6.0.0",
+      "hashPath": "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512"
+    },
+    "System.Runtime.CompilerServices.Unsafe/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
+      "path": "system.runtime.compilerservices.unsafe/6.0.0",
+      "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
+    },
+    "System.Security.AccessControl/4.5.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-vW8Eoq0TMyz5vAG/6ce483x/CP83fgm4SJe5P8Tb1tZaobcvPrbMEL7rhH1DRdrYbbb6F0vq3OlzmK0Pkwks5A==",
+      "path": "system.security.accesscontrol/4.5.0",
+      "hashPath": "system.security.accesscontrol.4.5.0.nupkg.sha512"
+    },
+    "System.Security.Cryptography.ProtectedData/4.5.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==",
+      "path": "system.security.cryptography.protecteddata/4.5.0",
+      "hashPath": "system.security.cryptography.protecteddata.4.5.0.nupkg.sha512"
+    },
+    "System.Security.Permissions/4.5.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==",
+      "path": "system.security.permissions/4.5.0",
+      "hashPath": "system.security.permissions.4.5.0.nupkg.sha512"
+    },
+    "System.Security.Principal.Windows/4.5.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-U77HfRXlZlOeIXd//Yoj6Jnk8AXlbeisf1oq1os+hxOGVnuG+lGSfGqTwTZBoORFF6j/0q7HXIl8cqwQ9aUGqQ==",
+      "path": "system.security.principal.windows/4.5.0",
+      "hashPath": "system.security.principal.windows.4.5.0.nupkg.sha512"
+    },
+    "Apq/1.0.0.0": {
+      "type": "reference",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "Apq.Web5/1.0.0.0": {
+      "type": "reference",
+      "serviceable": false,
+      "sha512": ""
+    }
+  }
+}

BIN
Wfj/GsProxy/GsProxy.dll


BIN
Wfj/GsProxy/GsProxy.exe


BIN
Wfj/GsProxy/GsProxy.pdb


+ 21 - 0
Wfj/GsProxy/GsProxy.runtimeconfig.json

@@ -0,0 +1,21 @@
+{
+  "runtimeOptions": {
+    "tfm": "net8.0",
+    "frameworks": [
+      {
+        "name": "Microsoft.NETCore.App",
+        "version": "8.0.0"
+      },
+      {
+        "name": "Microsoft.AspNetCore.App",
+        "version": "8.0.0"
+      }
+    ],
+    "configProperties": {
+      "System.Threading.ThreadPool.MinThreads": 1000000,
+      "System.Threading.ThreadPool.MaxThreads": 21474800,
+      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
+      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+    }
+  }
+}

BIN
Wfj/GsProxy/Newtonsoft.Json.dll


BIN
Wfj/GsProxy/System.CommandLine.dll


BIN
Wfj/GsProxy/System.Configuration.ConfigurationManager.dll


BIN
Wfj/GsProxy/System.Security.Cryptography.ProtectedData.dll


BIN
Wfj/GsProxy/System.Security.Permissions.dll


BIN
Wfj/GsProxy/cs/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/de/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/es/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/fr/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/it/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/ja/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/ko/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/log4net.dll


BIN
Wfj/GsProxy/pl/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/protobuf-net.Core.dll


BIN
Wfj/GsProxy/protobuf-net.dll


BIN
Wfj/GsProxy/pt-BR/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/ru/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll


BIN
Wfj/GsProxy/tr/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/zh-Hans/System.CommandLine.resources.dll


BIN
Wfj/GsProxy/zh-Hant/System.CommandLine.resources.dll


+ 3 - 3
Wfj/WsRepeater/DockerBuild.txt

@@ -17,9 +17,9 @@ cd DockerImg/WsRepeater/
 docker login [email protected] registry.cn-guangzhou.aliyuncs.com
 
 # amd64上
-docker rmi registry.cn-guangzhou.aliyuncs.com/apq/wsrepeater:amd64_20240313
-docker build -t registry.cn-guangzhou.aliyuncs.com/apq/wsrepeater:amd64_20240313 .
-docker push registry.cn-guangzhou.aliyuncs.com/apq/wsrepeater:amd64_20240313
+docker rmi registry.cn-guangzhou.aliyuncs.com/apq/wsrepeater:amd64_20240314
+docker build -t registry.cn-guangzhou.aliyuncs.com/apq/wsrepeater:amd64_20240314 .
+docker push registry.cn-guangzhou.aliyuncs.com/apq/wsrepeater:amd64_20240314
 
 # arm64上
 docker rmi registry.cn-guangzhou.aliyuncs.com/apq/wsrepeater:arm64

BIN
Wfj/WsRepeater/WsRepeater.dll


BIN
Wfj/WsRepeater/WsRepeater.exe


BIN
Wfj/WsRepeater/WsRepeater.pdb


+ 1 - 0
Wfj/WsRepeater/WsRepeater.runtimeconfig.json

@@ -12,6 +12,7 @@
       }
     ],
     "configProperties": {
+      "System.Threading.ThreadPool.MinThreads": 1000000,
       "System.Threading.ThreadPool.MaxThreads": 21474800,
       "System.GC.Server": true,
       "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,

+ 2 - 0
Wfj/WsRepeater/runtimeconfig.template.json

@@ -1,5 +1,7 @@
 {
 	"configProperties": {
+		// 指定工作线程池的最小线程数。
+		"System.Threading.ThreadPool.MinThreads": 1000000,
 		// 指定工作线程池的最大线程数。
 		"System.Threading.ThreadPool.MaxThreads": 21474800
 	}