黄宗银 1 an în urmă
părinte
comite
a2d056f037

BIN
Debug/net8.0/Apq.DAL.dll


BIN
Debug/net8.0/Apq.DAL.pdb


+ 39 - 39
Debug/net8.0/Apq.Web5.deps.json

@@ -9,7 +9,7 @@
       "Apq.Web5/1.0.0": {
         "dependencies": {
           "Apq": "1.0.0",
-          "Quartz.AspNetCore": "3.8.1"
+          "Quartz.AspNetCore": "3.9.0"
         },
         "runtime": {
           "Apq.Web5.dll": {}
@@ -757,54 +757,54 @@
           }
         }
       },
-      "Quartz/3.8.1": {
+      "Quartz/3.9.0": {
         "dependencies": {
           "Microsoft.Extensions.Logging.Abstractions": "8.0.0",
           "System.Configuration.ConfigurationManager": "8.0.0"
         },
         "runtime": {
           "lib/net6.0/Quartz.dll": {
-            "assemblyVersion": "3.8.1.0",
-            "fileVersion": "3.8.1.0"
+            "assemblyVersion": "3.9.0.0",
+            "fileVersion": "3.9.0.0"
           }
         }
       },
-      "Quartz.AspNetCore/3.8.1": {
+      "Quartz.AspNetCore/3.9.0": {
         "dependencies": {
           "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
           "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0",
-          "Quartz.Extensions.Hosting": "3.8.1"
+          "Quartz.Extensions.Hosting": "3.9.0"
         },
         "runtime": {
           "lib/net8.0/Quartz.AspNetCore.dll": {
-            "assemblyVersion": "3.8.1.0",
-            "fileVersion": "3.8.1.0"
+            "assemblyVersion": "3.9.0.0",
+            "fileVersion": "3.9.0.0"
           }
         }
       },
-      "Quartz.Extensions.DependencyInjection/3.8.1": {
+      "Quartz.Extensions.DependencyInjection/3.9.0": {
         "dependencies": {
           "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
           "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
           "Microsoft.Extensions.Options": "8.0.0",
-          "Quartz": "3.8.1"
+          "Quartz": "3.9.0"
         },
         "runtime": {
           "lib/net8.0/Quartz.Extensions.DependencyInjection.dll": {
-            "assemblyVersion": "3.8.1.0",
-            "fileVersion": "3.8.1.0"
+            "assemblyVersion": "3.9.0.0",
+            "fileVersion": "3.9.0.0"
           }
         }
       },
-      "Quartz.Extensions.Hosting/3.8.1": {
+      "Quartz.Extensions.Hosting/3.9.0": {
         "dependencies": {
           "Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
-          "Quartz.Extensions.DependencyInjection": "3.8.1"
+          "Quartz.Extensions.DependencyInjection": "3.9.0"
         },
         "runtime": {
           "lib/net8.0/Quartz.Extensions.Hosting.dll": {
-            "assemblyVersion": "3.8.1.0",
-            "fileVersion": "3.8.1.0"
+            "assemblyVersion": "3.9.0.0",
+            "fileVersion": "3.9.0.0"
           }
         }
       },
@@ -1207,11 +1207,11 @@
         }
       },
       "System.Numerics.Vectors/4.5.0": {},
-      "System.Reactive/6.0.0": {
+      "System.Reactive/6.0.1": {
         "runtime": {
           "lib/net6.0/System.Reactive.dll": {
             "assemblyVersion": "6.0.0.0",
-            "fileVersion": "6.0.0.1"
+            "fileVersion": "6.0.1.7420"
           }
         }
       },
@@ -1457,7 +1457,7 @@
           "System.Data.SQLite": "1.0.118",
           "System.Data.SqlClient": "4.8.6",
           "System.Linq.Dynamic.Core": "1.3.14",
-          "System.Reactive": "6.0.0",
+          "System.Reactive": "6.0.1",
           "Thinktecture.EntityFrameworkCore.SqlServer": "8.1.1",
           "Thinktecture.EntityFrameworkCore.Sqlite": "8.1.1",
           "Thinktecture.Runtime.Extensions.Json": "7.3.0",
@@ -1973,33 +1973,33 @@
       "path": "oracle.manageddataaccess.core/23.4.0",
       "hashPath": "oracle.manageddataaccess.core.23.4.0.nupkg.sha512"
     },
-    "Quartz/3.8.1": {
+    "Quartz/3.9.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-HlKm+43iG8LmXfejL1kIijO107x8ozEShLT2PFIkOWNSHUj7O7yTl6icFrn6DocPvigudQ90a6h2gdFShOwyXw==",
-      "path": "quartz/3.8.1",
-      "hashPath": "quartz.3.8.1.nupkg.sha512"
+      "sha512": "sha512-vfdug3lRbLYagkrOkeSKqmfT8pBLPY7c/qUsbif+qAJXVkmRQvDbF83fRAK4vzrfz07uDuPJQD+HbIWuliGKiQ==",
+      "path": "quartz/3.9.0",
+      "hashPath": "quartz.3.9.0.nupkg.sha512"
     },
-    "Quartz.AspNetCore/3.8.1": {
+    "Quartz.AspNetCore/3.9.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-5CBq1JFQUREBhK0mdGui41S8vylMZHJYf50BNy4C3fhtnAGj9AgrqPQT/QAVr2cc/+lIF8IsJTY51H69Nm9+WQ==",
-      "path": "quartz.aspnetcore/3.8.1",
-      "hashPath": "quartz.aspnetcore.3.8.1.nupkg.sha512"
+      "sha512": "sha512-RablV3XlLrNY0MM3awYFoY4hUAEEn7g7vaNVo7+XnRszQIXTOqkz5IPKoncZis0LdALjxyIrKhuzb8+bBzdC3g==",
+      "path": "quartz.aspnetcore/3.9.0",
+      "hashPath": "quartz.aspnetcore.3.9.0.nupkg.sha512"
     },
-    "Quartz.Extensions.DependencyInjection/3.8.1": {
+    "Quartz.Extensions.DependencyInjection/3.9.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-wXHLkm9fTFsIfaR8JHp4ttYYZB6fRjH7ZEgbhPtiiMp6V4LposWLC0UpG5ZLWjjIFk2LTr/N9fK983W+lJAo7w==",
-      "path": "quartz.extensions.dependencyinjection/3.8.1",
-      "hashPath": "quartz.extensions.dependencyinjection.3.8.1.nupkg.sha512"
+      "sha512": "sha512-94wJHZTERdtlIzUhawoE+TiVpTnO5tZUKsqYnIdYJOgorn/DkEmh5o9DJdNEpDc/+T+m2DmTnWqOv7MTcBA3Wg==",
+      "path": "quartz.extensions.dependencyinjection/3.9.0",
+      "hashPath": "quartz.extensions.dependencyinjection.3.9.0.nupkg.sha512"
     },
-    "Quartz.Extensions.Hosting/3.8.1": {
+    "Quartz.Extensions.Hosting/3.9.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-pgxrlRNF8b0kFLduCknTxoQ8zhB+HB6i8NrTD6LxS8aw4ByRSl1Gb9hsgWff7YGAeJ/OK92p7tptQhSDWn8G4Q==",
-      "path": "quartz.extensions.hosting/3.8.1",
-      "hashPath": "quartz.extensions.hosting.3.8.1.nupkg.sha512"
+      "sha512": "sha512-sCNMvOJ9G5oZXN5PC+7OnAlwQBlU7ALLe1Rw/vlkLM3Yl18+iUWQq5RjXfc4/ov6OcmuTz4n5iqFuydbbKe2+g==",
+      "path": "quartz.extensions.hosting/3.9.0",
+      "hashPath": "quartz.extensions.hosting.3.9.0.nupkg.sha512"
     },
     "runtime.native.System.Data.SqlClient.sni/4.7.0": {
       "type": "package",
@@ -2218,12 +2218,12 @@
       "path": "system.numerics.vectors/4.5.0",
       "hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
     },
-    "System.Reactive/6.0.0": {
+    "System.Reactive/6.0.1": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-31kfaW4ZupZzPsI5PVe77VhnvFF55qgma7KZr/E0iFTs6fmdhhG8j0mgEx620iLTey1EynOkEfnyTjtNEpJzGw==",
-      "path": "system.reactive/6.0.0",
-      "hashPath": "system.reactive.6.0.0.nupkg.sha512"
+      "sha512": "sha512-rHaWtKDwCi9qJ3ObKo8LHPMuuwv33YbmQi7TcUK1C264V3MFnOr5Im7QgCTdLniztP3GJyeiSg5x8NqYJFqRmg==",
+      "path": "system.reactive/6.0.1",
+      "hashPath": "system.reactive.6.0.1.nupkg.sha512"
     },
     "System.Reflection/4.3.0": {
       "type": "package",

BIN
Debug/net8.0/Apq.Web5.dll


BIN
Debug/net8.0/Apq.Web5.pdb


+ 8 - 1
Debug/net8.0/Apq.Web5.xml

@@ -38,6 +38,13 @@
             </summary>
             <param name="me"></param>
         </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetParamsInBody(Microsoft.AspNetCore.Http.HttpRequest,System.Func{System.String,System.Text.Encoding,System.String})">
+            <summary>
+            获取Body中的参数列表(POST)
+            </summary>
+            <param name="me"></param>
+            <param name="encodeFormUrlEncoded">提供编码或解码算法(仅用于application/x-www-form-urlencoded)。默认无</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},System.Func{System.String,System.Text.Encoding,System.String})">
             <summary>
             获取参数列表(POST/GET)
@@ -102,7 +109,7 @@
         </member>
         <member name="T:Apq.Web5.Filters.WebParamsFilterAttribute">
             <summary>
-            参数值绑定支持Form中的参数,如果Form中有值则取Form中的值
+            参数值绑定支持Body中传入的参数(覆盖QueryString中的同名参数)
             </summary>
         </member>
         <member name="T:Apq.Web5.JsonReturn.JsonRtn`1">

+ 7 - 7
Debug/net8.0/Apq.deps.json

@@ -26,7 +26,7 @@
           "System.Data.SQLite": "1.0.118",
           "System.Data.SqlClient": "4.8.6",
           "System.Linq.Dynamic.Core": "1.3.14",
-          "System.Reactive": "6.0.0",
+          "System.Reactive": "6.0.1",
           "Thinktecture.EntityFrameworkCore.SqlServer": "8.1.1",
           "Thinktecture.EntityFrameworkCore.Sqlite": "8.1.1",
           "Thinktecture.Runtime.Extensions.Json": "7.3.0",
@@ -1310,11 +1310,11 @@
         }
       },
       "System.Numerics.Vectors/4.5.0": {},
-      "System.Reactive/6.0.0": {
+      "System.Reactive/6.0.1": {
         "runtime": {
           "lib/net6.0/System.Reactive.dll": {
             "assemblyVersion": "6.0.0.0",
-            "fileVersion": "6.0.0.1"
+            "fileVersion": "6.0.1.7420"
           }
         }
       },
@@ -2254,12 +2254,12 @@
       "path": "system.numerics.vectors/4.5.0",
       "hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
     },
-    "System.Reactive/6.0.0": {
+    "System.Reactive/6.0.1": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-31kfaW4ZupZzPsI5PVe77VhnvFF55qgma7KZr/E0iFTs6fmdhhG8j0mgEx620iLTey1EynOkEfnyTjtNEpJzGw==",
-      "path": "system.reactive/6.0.0",
-      "hashPath": "system.reactive.6.0.0.nupkg.sha512"
+      "sha512": "sha512-rHaWtKDwCi9qJ3ObKo8LHPMuuwv33YbmQi7TcUK1C264V3MFnOr5Im7QgCTdLniztP3GJyeiSg5x8NqYJFqRmg==",
+      "path": "system.reactive/6.0.1",
+      "hashPath": "system.reactive.6.0.1.nupkg.sha512"
     },
     "System.Reflection/4.3.0": {
       "type": "package",

BIN
Debug/net8.0/Apq.dll


BIN
Debug/net8.0/Apq.pdb


+ 209 - 279
Debug/net8.0/Apq.xml

@@ -402,21 +402,6 @@
             集合已更改的数据(单项)
             </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>
             历史队列
@@ -1361,17 +1346,11 @@
             <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>
@@ -1409,6 +1388,35 @@
             !=运算符
             </summary>
         </member>
+        <member name="T:Apq.CsValueType">
+            <summary>
+            CSV表格中用到的C#数据类型
+            </summary>
+        </member>
+        <member name="F:Apq.CsValueType.None">
+             <summary>
+             无、未定义、未知
+             </summary>
+            [pbr::OriginalName("CsValueType_None")]
+        </member>
+        <member name="F:Apq.CsValueType.Long">
+             <summary>
+             整型
+             </summary>
+            [pbr::OriginalName("CsValueType_Long")]
+        </member>
+        <member name="F:Apq.CsValueType.Double">
+             <summary>
+             浮点型
+             </summary>
+            [pbr::OriginalName("CsValueType_Double")]
+        </member>
+        <member name="F:Apq.CsValueType.String">
+             <summary>
+             字符串
+             </summary>
+            [pbr::OriginalName("CsValueType_String")]
+        </member>
         <member name="T:Apq.DB.DBAdapterBase">
             <summary>
             数据库适配器基类
@@ -2682,7 +2690,7 @@
             获取枚举名称
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_Enum.ParseName``1(System.String)">
+        <member name="M:Apq.Extension.Ext_Enum.ParseName``1(System.String,System.Boolean)">
             <summary>
             根据名称获取指定类型的枚举实例
             </summary>
@@ -2805,17 +2813,47 @@
             List类基本扩展
             </summary>
         </member>
+        <member name="M:Apq.Extension.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="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_ByDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
+            <summary>
+            按索引位置获取子项,越界则取类型T的默认值
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IList.IndexOf_ByFirst``1(System.Collections.Generic.IList{``0},System.Int32)">
+            <summary>
+            按索引位置获取子项,越界则取第一个值
+            </summary>
+        </member>
         <member name="M:Apq.Extension.Ext_IList.IndexOf_ByCycle``1(System.Collections.Generic.IList{``0},System.Int32)">
             <summary>
             按循环索引获取子项
             </summary>
         </member>
+        <member name="M:Apq.Extension.Ext_IList.DoAddByIndex``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IList{System.Double})">
+            <summary>
+            列表加法:按索引位置,不足部分视为类型T的默认值
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IList.DoSubtractByIndex``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IList{System.Double})">
+            <summary>
+            列表减法:按索引位置,不足部分视为类型T的默认值
+            </summary>
+        </member>
         <member name="T:Apq.Extension.Ext_Json">
             <summary>
             Json串的扩展方法
@@ -3093,29 +3131,25 @@
             取出可空类型的原始值与类型
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.LikeDBNull(System.Object)">
+        <member name="M:Apq.Extension.Ext_Object.LikeDefault``1(``0)">
             <summary>
-            返回指定对象是否与 DBNull 具有相似意义[仿JScrip]{null,DBNull,string.Empty}
+            是否与 类型的默认值 具有相似意义 {null、DBNull、空白字符串、只包含一个LikeDefault的列表}
             </summary>
-            <returns></returns>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.IsNull(System.Object)">
+        <member name="M:Apq.Extension.Ext_Object.LikeDBNull(System.Object)">
             <summary>
-            返回指定对象是否为null{null,DBNull}
+            是否与 DBNull 具有相似意义[仿JScrip]{null,DBNull,空白字符串}
             </summary>
-            <returns></returns>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.IsNull_Cast(System.Object,System.Type)">
+        <member name="M:Apq.Extension.Ext_Object.IsNull(System.Object)">
             <summary>
-            返回指定对象转换为目标类型时是否应视为null{null,DBNull}
+            是否为null{null,DBNull}
             </summary>
-            <returns></returns>
         </member>
         <member name="M:Apq.Extension.Ext_Object.HasMean(System.Object)">
             <summary>
-            返回指定对象是否有意义,不为{null,DBNull,string.Empty,false}
+            返回指定对象是否有意义,不为{null,DBNull,string.Empty,false,0}
             </summary>
-            <returns></returns>
         </member>
         <member name="M:Apq.Extension.Ext_Object.SetPropertyValue(System.Object,System.String,System.Object)">
             <summary>
@@ -3500,7 +3534,7 @@
         </member>
         <member name="M:Apq.ISingleton`1.Init">
             <summary>
-            对新创建的实例进行初始化(可以为空方法,实现类应在创建单态实例后立即调用)
+            对新创建的实例进行初始化(可以为空方法,如果不为空,则应在创建单态实例后先调用此方法再使用其它方法)
             </summary>
         </member>
         <member name="T:Apq.JsonPocoBase">
@@ -3690,7 +3724,7 @@
             将json作为Form内容,POST到指定url
             </summary>
             <param name="url"></param>
-            <param name="json">参数</param>
+            <param name="json">Post的body</param>
             <param name="contentHeaders">请求头</param>
             <param name="encodingForm">Form的编码格式</param>
             <param name="cancellationToken"></param>
@@ -3734,7 +3768,7 @@
         </member>
         <member name="M:Apq.Net.HttpClientor.Init">
             <summary>
-            对新创建的实例进行初始化(可以为空方法,实现类应在创建单态实例后立即调用)
+            对新创建的实例进行初始化(可以为空方法,如果不为空,则应在创建单态实例后先调用此方法再使用其它方法)
             </summary>
         </member>
         <member name="F:Apq.Net.HttpClientor._lazyClient">
@@ -3747,6 +3781,26 @@
             是否禁用缓存
             </summary>
         </member>
+        <member name="T:Apq.Net.HttpRspString">
+            <summary>
+            Http响应串
+            </summary>
+        </member>
+        <member name="P:Apq.Net.HttpRspString.Rsp">
+            <summary>
+            响应串
+            </summary>
+        </member>
+        <member name="P:Apq.Net.HttpRspString.Status">
+            <summary>
+            状态码
+            </summary>
+        </member>
+        <member name="P:Apq.Net.HttpRspString.Success">
+            <summary>
+            是否成功
+            </summary>
+        </member>
         <member name="T:Apq.Net.JsonParams.CloseParam">
             <summary>
             明确关闭连接
@@ -4437,18 +4491,18 @@
             </summary>
             <param name="separator">分隔符(这个字符之后的子串算为QueryString)</param>
         </member>
-        <member name="M:Apq.Net.UrlHelper.PickParams(System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Collections.Generic.ICollection{System.String},System.String)">
+        <member name="M:Apq.Net.UrlHelper.PickQueryParams(System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Collections.Generic.ICollection{System.String},System.String)">
             <summary>
             从QueryString中提取参数
             </summary>
             <param name="queryString"></param>
             <param name="encoding"></param>
-            <param name="encodeQuery">提供编码或解码算法。默认使用 WebUtility.UrlDecode</param>
+            <param name="encodeQuery">提供编码或解码算法。默认使用 HttpUtility.UrlDecode</param>
             <param name="separator"></param>
             <param name="assignment"></param>
             <returns></returns>
         </member>
-        <member name="M:Apq.Net.UrlHelper.PickParamValue``1(System.String,System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Collections.Generic.ICollection{System.String},System.String)">
+        <member name="M:Apq.Net.UrlHelper.PickQueryParamValue``1(System.String,System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Collections.Generic.ICollection{System.String},System.String)">
             <summary>
             从QueryString中提取参数值
             </summary>
@@ -4470,404 +4524,275 @@
             <param name="encodeQuery">提供编码或解码算法。默认无</param>
             <returns></returns>
         </member>
-        <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.NotifyChangeConcurrentQueue`1.ListChanging">
-            <summary>
-            列表即将更改事件
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.OnListChanging(Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs{`0})">
-            <summary>
-            通知列表即将更改
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.FireListChanging(Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs{`0})">
-            <summary>
-            仅触发事件
-            </summary>
-            <returns>是否阻止更改</returns>
-        </member>
-        <member name="E:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.ListChanged">
+        <member name="T:Apq.NotifyChange.ChangeEventArgs">
             <summary>
-            列表已更改事件
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.OnListChanged(Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs{`0})">
-            <summary>
-            通知列表已更改
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.FireListChanged(Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs{`0})">
-            <summary>
-            仅触发事件
-            </summary>
-        </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1">
-            <summary>
-            列表事件的参数
+            属性更改事件参数
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.#ctor(Apq.NotifyChange.NotifyChangeConcurrentQueue{`0})">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.Parent">
             <summary>
-            列表事件的参数
+            上级链(最后一个是最下级)
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.ConcurrentQueue">
+        <member name="M:Apq.NotifyChange.ChangeEventArgs.#ctor(System.String,Apq.NotifyChange.INotifyChangeProperty)">
             <summary>
-            列表实例
+            属性更改事件参数
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.ChangeType">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.IsStopBubble">
             <summary>
-            更改类型
+            指示是否中止事件冒泡
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.Cancel">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.Cancel">
             <summary>
             指示是否取消(中断后续流程)
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.Deleted">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.ChangeType">
             <summary>
-            删除的项
-            </summary>
-        </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.Inserted">
-            <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})">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.OriginalIndex">
             <summary>
-            移除满足条件的所有项
+            更改前在列表中的索引位置(不在则为-1)
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeListEventArgs`1">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.NewIndex">
             <summary>
-            列表事件的参数
+            更改前在列表中的索引位置(不在则为-1)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeListEventArgs`1.#ctor(Apq.NotifyChange.NotifyChangeList{`0})">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.OriginalValue">
             <summary>
-            列表事件的参数
+            原值
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.List">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.NewValue">
             <summary>
-            列表实例
+            新值
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.ChangeType">
+        <member name="T:Apq.NotifyChange.ChangeEventArgs`1">
             <summary>
-            更改类型
+            属性更改事件参数
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Cancel">
+        <member name="M:Apq.NotifyChange.ChangeEventArgs`1.#ctor(System.String,Apq.NotifyChange.INotifyChangeProperty)">
             <summary>
-            指示是否取消(中断后续流程)
+            属性更改事件参数
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Deleted">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs`1.OriginalValueT">
             <summary>
-            删除的项
+            原值
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Inserted">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs`1.NewValueT">
             <summary>
-            插入的项
+            新值
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeProperty">
+        <member name="T:Apq.NotifyChange.INotifyChangeProperty">
             <summary>
-            可暂停的更改通知
+            值更改前后发出通知(可暂停)
             </summary>
+            <remarks></remarks>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeProperty.#ctor(System.String,Apq.NotifyChange.NotifyPropertyChange)">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.EventSuspendList_Contains(System.Collections.Generic.List{System.String},System.String)">
             <summary>
-            可暂停的更改通知
+            暂停列表中是否包含指定名称
             </summary>
+            <returns>如果列表中包含了“任意属性”,则一定返回true</returns>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeProperty.Instance">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.Parent">
             <summary>
             属性所属实例
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeProperty.PropertyName">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.PropertyName">
             <summary>
             属性名称
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeProperty.ChangingSuspend">
-            <summary>
-            是否已暂停更改前事件
-            </summary>
-        </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeProperty.ChangedSuspend">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.EventSuspendList_Changing">
             <summary>
-            是否已暂停更改后事件
+            更改前通知已被暂停的属性名(下级)
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeProperty`1">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.EventSuspendList_Changed">
             <summary>
-            支持更改通知的属性(可暂停)
+            更改后通知已被暂停的属性名(下级)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.#ctor(System.String,Apq.NotifyChange.NotifyPropertyChange)">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.ChangingSuspend">
             <summary>
-            支持更改通知的属性(可暂停)
+            是否已暂停自己的更改前事件
             </summary>
         </member>
-        <member name="E:Apq.NotifyChange.NotifyChangeProperty`1.Changing">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.TurnChanging(System.String,System.Boolean)">
             <summary>
-            更改前
+            暂停或恢复 下级的属性即将更改事件
             </summary>
+            <param name="propertyName">属性名("All"/"Any"表示任意属性)</param>
+            <param name="Resume">是否恢复引发事件</param>
         </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)">
+        <member name="E:Apq.NotifyChange.INotifyChangeProperty.Changing">
             <summary>
-            更改后(派生类重写时可以直接调用Fire方法而不调用此方法)
+            属性即将更改事件
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanging(`0,`0)">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.FireChanging(Apq.NotifyChange.ChangeEventArgs)">
             <summary>
             仅触发事件(暂停则不触发)
             </summary>
             <returns>是否阻止更改</returns>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanged(`0,`0)">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.ChangedSuspend">
             <summary>
-            仅触发事件(暂停则不触发)
-            </summary>
-        </member>
-        <member name="E:Apq.NotifyChange.NotifyChangeQueue`1.ListChanging">
-            <summary>
-            列表即将更改事件
+            是否已暂停自己的更改后事件
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueue`1.OnListChanging(Apq.NotifyChange.NotifyChangeQueueEventArgs{`0})">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.TurnChanged(System.String,System.Boolean)">
             <summary>
-            通知列表即将更改
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueue`1.FireListChanging(Apq.NotifyChange.NotifyChangeQueueEventArgs{`0})">
-            <summary>
-            仅触发事件
-            </summary>
-            <returns>是否阻止更改</returns>
-        </member>
-        <member name="E:Apq.NotifyChange.NotifyChangeQueue`1.ListChanged">
-            <summary>
-            列表已更改事件
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueue`1.OnListChanged(Apq.NotifyChange.NotifyChangeQueueEventArgs{`0})">
-            <summary>
-            通知列表已更改
+            暂停或恢复 下级的属性已更改事件
             </summary>
+            <param name="propertyName">属性名("All"/"Any"表示任意属性)</param>
+            <param name="Resume">是否恢复引发事件</param>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueue`1.FireListChanged(Apq.NotifyChange.NotifyChangeQueueEventArgs{`0})">
+        <member name="E:Apq.NotifyChange.INotifyChangeProperty.Changed">
             <summary>
-            仅触发事件
+            属性已更改事件
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeQueueEventArgs`1">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.FireChanged(Apq.NotifyChange.ChangeEventArgs)">
             <summary>
-            列表事件的参数
+            仅触发事件(暂停则不触发)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.#ctor(Apq.NotifyChange.NotifyChangeQueue{`0})">
+        <member name="T:Apq.NotifyChange.NotifyChangeProperty`1">
             <summary>
-            列表事件的参数
+            支持更改通知的属性(事件冒泡、可暂停)
             </summary>
+            <typeparam name="T">属性的类型(或列表的子项类型)</typeparam>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.Queue">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.#ctor(System.String,Apq.NotifyChange.INotifyChangeProperty,System.Func{System.Collections.Generic.IList{`0}},System.Func{`0})">
             <summary>
-            列表实例
+            支持更改通知的属性(可暂停)
             </summary>
+            <param name="propertyName">属性名称</param>
+            <param name="parent">属性所属实例</param>
+            <param name="creatorList">如何创建列表</param>
+            <param name="creator">如何新建列表中的项</param>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.ChangeType">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.PropertyName">
             <summary>
-            更改类型
+            属性名称
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.Cancel">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Parent">
             <summary>
-            指示是否取消(中断后续流程)
+            属性所属实例
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.Deleted">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.CreatorList">
             <summary>
-            删除的项
+            如何创建列表
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.Inserted">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Creator">
             <summary>
-            插入的项
+            如何新建列表中的项
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyPropertyChange">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Values">
             <summary>
-            属性更改通知(可暂停)
+            获取属性值(列表)
             </summary>
-            <remarks></remarks>
         </member>
-        <member name="F:Apq.NotifyChange.NotifyPropertyChange.EventSuspendAnyProperty">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.EventSuspendList_Changing">
             <summary>
-            表示用于阻止任意属性的更改事件的可用名称["All", "Any"]
+            更改前通知已被暂停的属性名(下级)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.EventSuspendList_Contains(System.Collections.Generic.List{System.String},System.String)">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.EventSuspendList_Changed">
             <summary>
-            暂停列表中是否包含指定名称
+            更改后通知已被暂停的属性名(下级)
             </summary>
-            <returns>如果列表中包含了“任意属性”,则一定包含(即返回true)</returns>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.StartEventListener_PropertyChange">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.ChangingSuspend">
             <summary>
-            开始监听自己的属性更改事件
+            是否已暂停自己的更改前事件
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.StopEventListener_PropertyChange">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.ChangedSuspend">
             <summary>
-            停止监听自己的属性更改事件
+            是否已暂停自己的更改事件
             </summary>
         </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)">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.TurnChanging(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)">
+        <member name="E:Apq.NotifyChange.NotifyChangeProperty`1.Changing">
             <summary>
-            仅触发事件(暂停则不触发)
+            更改前
             </summary>
-            <returns>是否阻止更改</returns>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.EventSuspend_PropertyChanged(System.String,System.Boolean)">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.TurnChanged(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)">
+        <member name="E:Apq.NotifyChange.NotifyChangeProperty`1.Changed">
             <summary>
-            通知属性已更改
+            更改后
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.FirePropertyChanged(System.String,System.Object,System.Object)">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanging(Apq.NotifyChange.ChangeEventArgs)">
             <summary>
             仅触发事件(暂停则不触发)
             </summary>
+            <returns>是否阻止更改</returns>
         </member>
-        <member name="T:Apq.NotifyChange.PropertyChangeEventArgs">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanged(Apq.NotifyChange.ChangeEventArgs)">
             <summary>
-            属性更改事件参数
+            仅触发事件(暂停则不触发)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.PropertyChangeEventArgs.#ctor(System.String)">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.Clear">
             <summary>
-            属性更改事件参数
+            清空
             </summary>
+            <remarks>仅支持更改后事件</remarks>
         </member>
-        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.PropertyName">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.Insert(System.Int32,`0)">
             <summary>
-            属性名
+            在指定索引位置插入项
             </summary>
+            <param name="index">如果索引超出范围,则视为添加</param>
+            <param name="item"></param>
         </member>
-        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.Cancel">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.RemoveAll(System.Func{`0,System.Boolean})">
             <summary>
-            指示是否取消(中断后续流程)
+            移除满足条件的所有项
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.OriginalValue">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Value">
             <summary>
-            
+            当前
             </summary>
+            <remarks>取列表中的第一个值</remarks>
         </member>
-        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.NewValue">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.HasValue">
             <summary>
-            
+            属性是否有
             </summary>
         </member>
         <member name="T:Apq.PlAccessor.PHP.QueryStringBuilder">
@@ -4917,6 +4842,11 @@
              Returns a collection of entries that represent items in the dictionary.
             </summary>
         </member>
+        <member name="T:Apq.Props.PropBase">
+            <summary>
+            属性基类
+            </summary>
+        </member>
         <member name="T:Apq.RandomString">
             <summary>
             随机字符串生成器

BIN
Release/net8.0/Apq.DAL.dll


BIN
Release/net8.0/Apq.DAL.pdb


+ 39 - 39
Release/net8.0/Apq.Web5.deps.json

@@ -9,7 +9,7 @@
       "Apq.Web5/1.0.0": {
         "dependencies": {
           "Apq": "1.0.0",
-          "Quartz.AspNetCore": "3.8.1"
+          "Quartz.AspNetCore": "3.9.0"
         },
         "runtime": {
           "Apq.Web5.dll": {}
@@ -757,54 +757,54 @@
           }
         }
       },
-      "Quartz/3.8.1": {
+      "Quartz/3.9.0": {
         "dependencies": {
           "Microsoft.Extensions.Logging.Abstractions": "8.0.0",
           "System.Configuration.ConfigurationManager": "8.0.0"
         },
         "runtime": {
           "lib/net6.0/Quartz.dll": {
-            "assemblyVersion": "3.8.1.0",
-            "fileVersion": "3.8.1.0"
+            "assemblyVersion": "3.9.0.0",
+            "fileVersion": "3.9.0.0"
           }
         }
       },
-      "Quartz.AspNetCore/3.8.1": {
+      "Quartz.AspNetCore/3.9.0": {
         "dependencies": {
           "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
           "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0",
-          "Quartz.Extensions.Hosting": "3.8.1"
+          "Quartz.Extensions.Hosting": "3.9.0"
         },
         "runtime": {
           "lib/net8.0/Quartz.AspNetCore.dll": {
-            "assemblyVersion": "3.8.1.0",
-            "fileVersion": "3.8.1.0"
+            "assemblyVersion": "3.9.0.0",
+            "fileVersion": "3.9.0.0"
           }
         }
       },
-      "Quartz.Extensions.DependencyInjection/3.8.1": {
+      "Quartz.Extensions.DependencyInjection/3.9.0": {
         "dependencies": {
           "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
           "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
           "Microsoft.Extensions.Options": "8.0.0",
-          "Quartz": "3.8.1"
+          "Quartz": "3.9.0"
         },
         "runtime": {
           "lib/net8.0/Quartz.Extensions.DependencyInjection.dll": {
-            "assemblyVersion": "3.8.1.0",
-            "fileVersion": "3.8.1.0"
+            "assemblyVersion": "3.9.0.0",
+            "fileVersion": "3.9.0.0"
           }
         }
       },
-      "Quartz.Extensions.Hosting/3.8.1": {
+      "Quartz.Extensions.Hosting/3.9.0": {
         "dependencies": {
           "Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
-          "Quartz.Extensions.DependencyInjection": "3.8.1"
+          "Quartz.Extensions.DependencyInjection": "3.9.0"
         },
         "runtime": {
           "lib/net8.0/Quartz.Extensions.Hosting.dll": {
-            "assemblyVersion": "3.8.1.0",
-            "fileVersion": "3.8.1.0"
+            "assemblyVersion": "3.9.0.0",
+            "fileVersion": "3.9.0.0"
           }
         }
       },
@@ -1207,11 +1207,11 @@
         }
       },
       "System.Numerics.Vectors/4.5.0": {},
-      "System.Reactive/6.0.0": {
+      "System.Reactive/6.0.1": {
         "runtime": {
           "lib/net6.0/System.Reactive.dll": {
             "assemblyVersion": "6.0.0.0",
-            "fileVersion": "6.0.0.1"
+            "fileVersion": "6.0.1.7420"
           }
         }
       },
@@ -1457,7 +1457,7 @@
           "System.Data.SQLite": "1.0.118",
           "System.Data.SqlClient": "4.8.6",
           "System.Linq.Dynamic.Core": "1.3.14",
-          "System.Reactive": "6.0.0",
+          "System.Reactive": "6.0.1",
           "Thinktecture.EntityFrameworkCore.SqlServer": "8.1.1",
           "Thinktecture.EntityFrameworkCore.Sqlite": "8.1.1",
           "Thinktecture.Runtime.Extensions.Json": "7.3.0",
@@ -1973,33 +1973,33 @@
       "path": "oracle.manageddataaccess.core/23.4.0",
       "hashPath": "oracle.manageddataaccess.core.23.4.0.nupkg.sha512"
     },
-    "Quartz/3.8.1": {
+    "Quartz/3.9.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-HlKm+43iG8LmXfejL1kIijO107x8ozEShLT2PFIkOWNSHUj7O7yTl6icFrn6DocPvigudQ90a6h2gdFShOwyXw==",
-      "path": "quartz/3.8.1",
-      "hashPath": "quartz.3.8.1.nupkg.sha512"
+      "sha512": "sha512-vfdug3lRbLYagkrOkeSKqmfT8pBLPY7c/qUsbif+qAJXVkmRQvDbF83fRAK4vzrfz07uDuPJQD+HbIWuliGKiQ==",
+      "path": "quartz/3.9.0",
+      "hashPath": "quartz.3.9.0.nupkg.sha512"
     },
-    "Quartz.AspNetCore/3.8.1": {
+    "Quartz.AspNetCore/3.9.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-5CBq1JFQUREBhK0mdGui41S8vylMZHJYf50BNy4C3fhtnAGj9AgrqPQT/QAVr2cc/+lIF8IsJTY51H69Nm9+WQ==",
-      "path": "quartz.aspnetcore/3.8.1",
-      "hashPath": "quartz.aspnetcore.3.8.1.nupkg.sha512"
+      "sha512": "sha512-RablV3XlLrNY0MM3awYFoY4hUAEEn7g7vaNVo7+XnRszQIXTOqkz5IPKoncZis0LdALjxyIrKhuzb8+bBzdC3g==",
+      "path": "quartz.aspnetcore/3.9.0",
+      "hashPath": "quartz.aspnetcore.3.9.0.nupkg.sha512"
     },
-    "Quartz.Extensions.DependencyInjection/3.8.1": {
+    "Quartz.Extensions.DependencyInjection/3.9.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-wXHLkm9fTFsIfaR8JHp4ttYYZB6fRjH7ZEgbhPtiiMp6V4LposWLC0UpG5ZLWjjIFk2LTr/N9fK983W+lJAo7w==",
-      "path": "quartz.extensions.dependencyinjection/3.8.1",
-      "hashPath": "quartz.extensions.dependencyinjection.3.8.1.nupkg.sha512"
+      "sha512": "sha512-94wJHZTERdtlIzUhawoE+TiVpTnO5tZUKsqYnIdYJOgorn/DkEmh5o9DJdNEpDc/+T+m2DmTnWqOv7MTcBA3Wg==",
+      "path": "quartz.extensions.dependencyinjection/3.9.0",
+      "hashPath": "quartz.extensions.dependencyinjection.3.9.0.nupkg.sha512"
     },
-    "Quartz.Extensions.Hosting/3.8.1": {
+    "Quartz.Extensions.Hosting/3.9.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-pgxrlRNF8b0kFLduCknTxoQ8zhB+HB6i8NrTD6LxS8aw4ByRSl1Gb9hsgWff7YGAeJ/OK92p7tptQhSDWn8G4Q==",
-      "path": "quartz.extensions.hosting/3.8.1",
-      "hashPath": "quartz.extensions.hosting.3.8.1.nupkg.sha512"
+      "sha512": "sha512-sCNMvOJ9G5oZXN5PC+7OnAlwQBlU7ALLe1Rw/vlkLM3Yl18+iUWQq5RjXfc4/ov6OcmuTz4n5iqFuydbbKe2+g==",
+      "path": "quartz.extensions.hosting/3.9.0",
+      "hashPath": "quartz.extensions.hosting.3.9.0.nupkg.sha512"
     },
     "runtime.native.System.Data.SqlClient.sni/4.7.0": {
       "type": "package",
@@ -2218,12 +2218,12 @@
       "path": "system.numerics.vectors/4.5.0",
       "hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
     },
-    "System.Reactive/6.0.0": {
+    "System.Reactive/6.0.1": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-31kfaW4ZupZzPsI5PVe77VhnvFF55qgma7KZr/E0iFTs6fmdhhG8j0mgEx620iLTey1EynOkEfnyTjtNEpJzGw==",
-      "path": "system.reactive/6.0.0",
-      "hashPath": "system.reactive.6.0.0.nupkg.sha512"
+      "sha512": "sha512-rHaWtKDwCi9qJ3ObKo8LHPMuuwv33YbmQi7TcUK1C264V3MFnOr5Im7QgCTdLniztP3GJyeiSg5x8NqYJFqRmg==",
+      "path": "system.reactive/6.0.1",
+      "hashPath": "system.reactive.6.0.1.nupkg.sha512"
     },
     "System.Reflection/4.3.0": {
       "type": "package",

BIN
Release/net8.0/Apq.Web5.dll


BIN
Release/net8.0/Apq.Web5.pdb


+ 8 - 1
Release/net8.0/Apq.Web5.xml

@@ -38,6 +38,13 @@
             </summary>
             <param name="me"></param>
         </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetParamsInBody(Microsoft.AspNetCore.Http.HttpRequest,System.Func{System.String,System.Text.Encoding,System.String})">
+            <summary>
+            获取Body中的参数列表(POST)
+            </summary>
+            <param name="me"></param>
+            <param name="encodeFormUrlEncoded">提供编码或解码算法(仅用于application/x-www-form-urlencoded)。默认无</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},System.Func{System.String,System.Text.Encoding,System.String})">
             <summary>
             获取参数列表(POST/GET)
@@ -102,7 +109,7 @@
         </member>
         <member name="T:Apq.Web5.Filters.WebParamsFilterAttribute">
             <summary>
-            参数值绑定支持Form中的参数,如果Form中有值则取Form中的值
+            参数值绑定支持Body中传入的参数(覆盖QueryString中的同名参数)
             </summary>
         </member>
         <member name="T:Apq.Web5.JsonReturn.JsonRtn`1">

+ 7 - 7
Release/net8.0/Apq.deps.json

@@ -26,7 +26,7 @@
           "System.Data.SQLite": "1.0.118",
           "System.Data.SqlClient": "4.8.6",
           "System.Linq.Dynamic.Core": "1.3.14",
-          "System.Reactive": "6.0.0",
+          "System.Reactive": "6.0.1",
           "Thinktecture.EntityFrameworkCore.SqlServer": "8.1.1",
           "Thinktecture.EntityFrameworkCore.Sqlite": "8.1.1",
           "Thinktecture.Runtime.Extensions.Json": "7.3.0",
@@ -1310,11 +1310,11 @@
         }
       },
       "System.Numerics.Vectors/4.5.0": {},
-      "System.Reactive/6.0.0": {
+      "System.Reactive/6.0.1": {
         "runtime": {
           "lib/net6.0/System.Reactive.dll": {
             "assemblyVersion": "6.0.0.0",
-            "fileVersion": "6.0.0.1"
+            "fileVersion": "6.0.1.7420"
           }
         }
       },
@@ -2254,12 +2254,12 @@
       "path": "system.numerics.vectors/4.5.0",
       "hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
     },
-    "System.Reactive/6.0.0": {
+    "System.Reactive/6.0.1": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-31kfaW4ZupZzPsI5PVe77VhnvFF55qgma7KZr/E0iFTs6fmdhhG8j0mgEx620iLTey1EynOkEfnyTjtNEpJzGw==",
-      "path": "system.reactive/6.0.0",
-      "hashPath": "system.reactive.6.0.0.nupkg.sha512"
+      "sha512": "sha512-rHaWtKDwCi9qJ3ObKo8LHPMuuwv33YbmQi7TcUK1C264V3MFnOr5Im7QgCTdLniztP3GJyeiSg5x8NqYJFqRmg==",
+      "path": "system.reactive/6.0.1",
+      "hashPath": "system.reactive.6.0.1.nupkg.sha512"
     },
     "System.Reflection/4.3.0": {
       "type": "package",

BIN
Release/net8.0/Apq.dll


BIN
Release/net8.0/Apq.pdb


+ 209 - 279
Release/net8.0/Apq.xml

@@ -402,21 +402,6 @@
             集合已更改的数据(单项)
             </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>
             历史队列
@@ -1361,17 +1346,11 @@
             <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>
@@ -1409,6 +1388,35 @@
             !=运算符
             </summary>
         </member>
+        <member name="T:Apq.CsValueType">
+            <summary>
+            CSV表格中用到的C#数据类型
+            </summary>
+        </member>
+        <member name="F:Apq.CsValueType.None">
+             <summary>
+             无、未定义、未知
+             </summary>
+            [pbr::OriginalName("CsValueType_None")]
+        </member>
+        <member name="F:Apq.CsValueType.Long">
+             <summary>
+             整型
+             </summary>
+            [pbr::OriginalName("CsValueType_Long")]
+        </member>
+        <member name="F:Apq.CsValueType.Double">
+             <summary>
+             浮点型
+             </summary>
+            [pbr::OriginalName("CsValueType_Double")]
+        </member>
+        <member name="F:Apq.CsValueType.String">
+             <summary>
+             字符串
+             </summary>
+            [pbr::OriginalName("CsValueType_String")]
+        </member>
         <member name="T:Apq.DB.DBAdapterBase">
             <summary>
             数据库适配器基类
@@ -2682,7 +2690,7 @@
             获取枚举名称
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_Enum.ParseName``1(System.String)">
+        <member name="M:Apq.Extension.Ext_Enum.ParseName``1(System.String,System.Boolean)">
             <summary>
             根据名称获取指定类型的枚举实例
             </summary>
@@ -2805,17 +2813,47 @@
             List类基本扩展
             </summary>
         </member>
+        <member name="M:Apq.Extension.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="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_ByDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
+            <summary>
+            按索引位置获取子项,越界则取类型T的默认值
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IList.IndexOf_ByFirst``1(System.Collections.Generic.IList{``0},System.Int32)">
+            <summary>
+            按索引位置获取子项,越界则取第一个值
+            </summary>
+        </member>
         <member name="M:Apq.Extension.Ext_IList.IndexOf_ByCycle``1(System.Collections.Generic.IList{``0},System.Int32)">
             <summary>
             按循环索引获取子项
             </summary>
         </member>
+        <member name="M:Apq.Extension.Ext_IList.DoAddByIndex``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IList{System.Double})">
+            <summary>
+            列表加法:按索引位置,不足部分视为类型T的默认值
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_IList.DoSubtractByIndex``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IList{System.Double})">
+            <summary>
+            列表减法:按索引位置,不足部分视为类型T的默认值
+            </summary>
+        </member>
         <member name="T:Apq.Extension.Ext_Json">
             <summary>
             Json串的扩展方法
@@ -3093,29 +3131,25 @@
             取出可空类型的原始值与类型
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.LikeDBNull(System.Object)">
+        <member name="M:Apq.Extension.Ext_Object.LikeDefault``1(``0)">
             <summary>
-            返回指定对象是否与 DBNull 具有相似意义[仿JScrip]{null,DBNull,string.Empty}
+            是否与 类型的默认值 具有相似意义 {null、DBNull、空白字符串、只包含一个LikeDefault的列表}
             </summary>
-            <returns></returns>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.IsNull(System.Object)">
+        <member name="M:Apq.Extension.Ext_Object.LikeDBNull(System.Object)">
             <summary>
-            返回指定对象是否为null{null,DBNull}
+            是否与 DBNull 具有相似意义[仿JScrip]{null,DBNull,空白字符串}
             </summary>
-            <returns></returns>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.IsNull_Cast(System.Object,System.Type)">
+        <member name="M:Apq.Extension.Ext_Object.IsNull(System.Object)">
             <summary>
-            返回指定对象转换为目标类型时是否应视为null{null,DBNull}
+            是否为null{null,DBNull}
             </summary>
-            <returns></returns>
         </member>
         <member name="M:Apq.Extension.Ext_Object.HasMean(System.Object)">
             <summary>
-            返回指定对象是否有意义,不为{null,DBNull,string.Empty,false}
+            返回指定对象是否有意义,不为{null,DBNull,string.Empty,false,0}
             </summary>
-            <returns></returns>
         </member>
         <member name="M:Apq.Extension.Ext_Object.SetPropertyValue(System.Object,System.String,System.Object)">
             <summary>
@@ -3500,7 +3534,7 @@
         </member>
         <member name="M:Apq.ISingleton`1.Init">
             <summary>
-            对新创建的实例进行初始化(可以为空方法,实现类应在创建单态实例后立即调用)
+            对新创建的实例进行初始化(可以为空方法,如果不为空,则应在创建单态实例后先调用此方法再使用其它方法)
             </summary>
         </member>
         <member name="T:Apq.JsonPocoBase">
@@ -3690,7 +3724,7 @@
             将json作为Form内容,POST到指定url
             </summary>
             <param name="url"></param>
-            <param name="json">参数</param>
+            <param name="json">Post的body</param>
             <param name="contentHeaders">请求头</param>
             <param name="encodingForm">Form的编码格式</param>
             <param name="cancellationToken"></param>
@@ -3734,7 +3768,7 @@
         </member>
         <member name="M:Apq.Net.HttpClientor.Init">
             <summary>
-            对新创建的实例进行初始化(可以为空方法,实现类应在创建单态实例后立即调用)
+            对新创建的实例进行初始化(可以为空方法,如果不为空,则应在创建单态实例后先调用此方法再使用其它方法)
             </summary>
         </member>
         <member name="F:Apq.Net.HttpClientor._lazyClient">
@@ -3747,6 +3781,26 @@
             是否禁用缓存
             </summary>
         </member>
+        <member name="T:Apq.Net.HttpRspString">
+            <summary>
+            Http响应串
+            </summary>
+        </member>
+        <member name="P:Apq.Net.HttpRspString.Rsp">
+            <summary>
+            响应串
+            </summary>
+        </member>
+        <member name="P:Apq.Net.HttpRspString.Status">
+            <summary>
+            状态码
+            </summary>
+        </member>
+        <member name="P:Apq.Net.HttpRspString.Success">
+            <summary>
+            是否成功
+            </summary>
+        </member>
         <member name="T:Apq.Net.JsonParams.CloseParam">
             <summary>
             明确关闭连接
@@ -4437,18 +4491,18 @@
             </summary>
             <param name="separator">分隔符(这个字符之后的子串算为QueryString)</param>
         </member>
-        <member name="M:Apq.Net.UrlHelper.PickParams(System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Collections.Generic.ICollection{System.String},System.String)">
+        <member name="M:Apq.Net.UrlHelper.PickQueryParams(System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Collections.Generic.ICollection{System.String},System.String)">
             <summary>
             从QueryString中提取参数
             </summary>
             <param name="queryString"></param>
             <param name="encoding"></param>
-            <param name="encodeQuery">提供编码或解码算法。默认使用 WebUtility.UrlDecode</param>
+            <param name="encodeQuery">提供编码或解码算法。默认使用 HttpUtility.UrlDecode</param>
             <param name="separator"></param>
             <param name="assignment"></param>
             <returns></returns>
         </member>
-        <member name="M:Apq.Net.UrlHelper.PickParamValue``1(System.String,System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Collections.Generic.ICollection{System.String},System.String)">
+        <member name="M:Apq.Net.UrlHelper.PickQueryParamValue``1(System.String,System.String,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Collections.Generic.ICollection{System.String},System.String)">
             <summary>
             从QueryString中提取参数值
             </summary>
@@ -4470,404 +4524,275 @@
             <param name="encodeQuery">提供编码或解码算法。默认无</param>
             <returns></returns>
         </member>
-        <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.NotifyChangeConcurrentQueue`1.ListChanging">
-            <summary>
-            列表即将更改事件
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.OnListChanging(Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs{`0})">
-            <summary>
-            通知列表即将更改
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.FireListChanging(Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs{`0})">
-            <summary>
-            仅触发事件
-            </summary>
-            <returns>是否阻止更改</returns>
-        </member>
-        <member name="E:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.ListChanged">
+        <member name="T:Apq.NotifyChange.ChangeEventArgs">
             <summary>
-            列表已更改事件
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.OnListChanged(Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs{`0})">
-            <summary>
-            通知列表已更改
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueue`1.FireListChanged(Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs{`0})">
-            <summary>
-            仅触发事件
-            </summary>
-        </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1">
-            <summary>
-            列表事件的参数
+            属性更改事件参数
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.#ctor(Apq.NotifyChange.NotifyChangeConcurrentQueue{`0})">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.Parent">
             <summary>
-            列表事件的参数
+            上级链(最后一个是最下级)
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.ConcurrentQueue">
+        <member name="M:Apq.NotifyChange.ChangeEventArgs.#ctor(System.String,Apq.NotifyChange.INotifyChangeProperty)">
             <summary>
-            列表实例
+            属性更改事件参数
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.ChangeType">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.IsStopBubble">
             <summary>
-            更改类型
+            指示是否中止事件冒泡
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.Cancel">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.Cancel">
             <summary>
             指示是否取消(中断后续流程)
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.Deleted">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.ChangeType">
             <summary>
-            删除的项
-            </summary>
-        </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeConcurrentQueueEventArgs`1.Inserted">
-            <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})">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.OriginalIndex">
             <summary>
-            移除满足条件的所有项
+            更改前在列表中的索引位置(不在则为-1)
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeListEventArgs`1">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.NewIndex">
             <summary>
-            列表事件的参数
+            更改前在列表中的索引位置(不在则为-1)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeListEventArgs`1.#ctor(Apq.NotifyChange.NotifyChangeList{`0})">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.OriginalValue">
             <summary>
-            列表事件的参数
+            原值
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.List">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs.NewValue">
             <summary>
-            列表实例
+            新值
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.ChangeType">
+        <member name="T:Apq.NotifyChange.ChangeEventArgs`1">
             <summary>
-            更改类型
+            属性更改事件参数
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Cancel">
+        <member name="M:Apq.NotifyChange.ChangeEventArgs`1.#ctor(System.String,Apq.NotifyChange.INotifyChangeProperty)">
             <summary>
-            指示是否取消(中断后续流程)
+            属性更改事件参数
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Deleted">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs`1.OriginalValueT">
             <summary>
-            删除的项
+            原值
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeListEventArgs`1.Inserted">
+        <member name="P:Apq.NotifyChange.ChangeEventArgs`1.NewValueT">
             <summary>
-            插入的项
+            新值
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeProperty">
+        <member name="T:Apq.NotifyChange.INotifyChangeProperty">
             <summary>
-            可暂停的更改通知
+            值更改前后发出通知(可暂停)
             </summary>
+            <remarks></remarks>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeProperty.#ctor(System.String,Apq.NotifyChange.NotifyPropertyChange)">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.EventSuspendList_Contains(System.Collections.Generic.List{System.String},System.String)">
             <summary>
-            可暂停的更改通知
+            暂停列表中是否包含指定名称
             </summary>
+            <returns>如果列表中包含了“任意属性”,则一定返回true</returns>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeProperty.Instance">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.Parent">
             <summary>
             属性所属实例
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeProperty.PropertyName">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.PropertyName">
             <summary>
             属性名称
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeProperty.ChangingSuspend">
-            <summary>
-            是否已暂停更改前事件
-            </summary>
-        </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeProperty.ChangedSuspend">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.EventSuspendList_Changing">
             <summary>
-            是否已暂停更改后事件
+            更改前通知已被暂停的属性名(下级)
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeProperty`1">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.EventSuspendList_Changed">
             <summary>
-            支持更改通知的属性(可暂停)
+            更改后通知已被暂停的属性名(下级)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.#ctor(System.String,Apq.NotifyChange.NotifyPropertyChange)">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.ChangingSuspend">
             <summary>
-            支持更改通知的属性(可暂停)
+            是否已暂停自己的更改前事件
             </summary>
         </member>
-        <member name="E:Apq.NotifyChange.NotifyChangeProperty`1.Changing">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.TurnChanging(System.String,System.Boolean)">
             <summary>
-            更改前
+            暂停或恢复 下级的属性即将更改事件
             </summary>
+            <param name="propertyName">属性名("All"/"Any"表示任意属性)</param>
+            <param name="Resume">是否恢复引发事件</param>
         </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)">
+        <member name="E:Apq.NotifyChange.INotifyChangeProperty.Changing">
             <summary>
-            更改后(派生类重写时可以直接调用Fire方法而不调用此方法)
+            属性即将更改事件
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanging(`0,`0)">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.FireChanging(Apq.NotifyChange.ChangeEventArgs)">
             <summary>
             仅触发事件(暂停则不触发)
             </summary>
             <returns>是否阻止更改</returns>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanged(`0,`0)">
+        <member name="P:Apq.NotifyChange.INotifyChangeProperty.ChangedSuspend">
             <summary>
-            仅触发事件(暂停则不触发)
-            </summary>
-        </member>
-        <member name="E:Apq.NotifyChange.NotifyChangeQueue`1.ListChanging">
-            <summary>
-            列表即将更改事件
+            是否已暂停自己的更改后事件
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueue`1.OnListChanging(Apq.NotifyChange.NotifyChangeQueueEventArgs{`0})">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.TurnChanged(System.String,System.Boolean)">
             <summary>
-            通知列表即将更改
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueue`1.FireListChanging(Apq.NotifyChange.NotifyChangeQueueEventArgs{`0})">
-            <summary>
-            仅触发事件
-            </summary>
-            <returns>是否阻止更改</returns>
-        </member>
-        <member name="E:Apq.NotifyChange.NotifyChangeQueue`1.ListChanged">
-            <summary>
-            列表已更改事件
-            </summary>
-        </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueue`1.OnListChanged(Apq.NotifyChange.NotifyChangeQueueEventArgs{`0})">
-            <summary>
-            通知列表已更改
+            暂停或恢复 下级的属性已更改事件
             </summary>
+            <param name="propertyName">属性名("All"/"Any"表示任意属性)</param>
+            <param name="Resume">是否恢复引发事件</param>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueue`1.FireListChanged(Apq.NotifyChange.NotifyChangeQueueEventArgs{`0})">
+        <member name="E:Apq.NotifyChange.INotifyChangeProperty.Changed">
             <summary>
-            仅触发事件
+            属性已更改事件
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyChangeQueueEventArgs`1">
+        <member name="M:Apq.NotifyChange.INotifyChangeProperty.FireChanged(Apq.NotifyChange.ChangeEventArgs)">
             <summary>
-            列表事件的参数
+            仅触发事件(暂停则不触发)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.#ctor(Apq.NotifyChange.NotifyChangeQueue{`0})">
+        <member name="T:Apq.NotifyChange.NotifyChangeProperty`1">
             <summary>
-            列表事件的参数
+            支持更改通知的属性(事件冒泡、可暂停)
             </summary>
+            <typeparam name="T">属性的类型(或列表的子项类型)</typeparam>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.Queue">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.#ctor(System.String,Apq.NotifyChange.INotifyChangeProperty,System.Func{System.Collections.Generic.IList{`0}},System.Func{`0})">
             <summary>
-            列表实例
+            支持更改通知的属性(可暂停)
             </summary>
+            <param name="propertyName">属性名称</param>
+            <param name="parent">属性所属实例</param>
+            <param name="creatorList">如何创建列表</param>
+            <param name="creator">如何新建列表中的项</param>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.ChangeType">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.PropertyName">
             <summary>
-            更改类型
+            属性名称
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.Cancel">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Parent">
             <summary>
-            指示是否取消(中断后续流程)
+            属性所属实例
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.Deleted">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.CreatorList">
             <summary>
-            删除的项
+            如何创建列表
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.NotifyChangeQueueEventArgs`1.Inserted">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Creator">
             <summary>
-            插入的项
+            如何新建列表中的项
             </summary>
         </member>
-        <member name="T:Apq.NotifyChange.NotifyPropertyChange">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Values">
             <summary>
-            属性更改通知(可暂停)
+            获取属性值(列表)
             </summary>
-            <remarks></remarks>
         </member>
-        <member name="F:Apq.NotifyChange.NotifyPropertyChange.EventSuspendAnyProperty">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.EventSuspendList_Changing">
             <summary>
-            表示用于阻止任意属性的更改事件的可用名称["All", "Any"]
+            更改前通知已被暂停的属性名(下级)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.EventSuspendList_Contains(System.Collections.Generic.List{System.String},System.String)">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.EventSuspendList_Changed">
             <summary>
-            暂停列表中是否包含指定名称
+            更改后通知已被暂停的属性名(下级)
             </summary>
-            <returns>如果列表中包含了“任意属性”,则一定包含(即返回true)</returns>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.StartEventListener_PropertyChange">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.ChangingSuspend">
             <summary>
-            开始监听自己的属性更改事件
+            是否已暂停自己的更改前事件
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.StopEventListener_PropertyChange">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.ChangedSuspend">
             <summary>
-            停止监听自己的属性更改事件
+            是否已暂停自己的更改事件
             </summary>
         </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)">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.TurnChanging(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)">
+        <member name="E:Apq.NotifyChange.NotifyChangeProperty`1.Changing">
             <summary>
-            仅触发事件(暂停则不触发)
+            更改前
             </summary>
-            <returns>是否阻止更改</returns>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.EventSuspend_PropertyChanged(System.String,System.Boolean)">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.TurnChanged(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)">
+        <member name="E:Apq.NotifyChange.NotifyChangeProperty`1.Changed">
             <summary>
-            通知属性已更改
+            更改后
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.NotifyPropertyChange.FirePropertyChanged(System.String,System.Object,System.Object)">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanging(Apq.NotifyChange.ChangeEventArgs)">
             <summary>
             仅触发事件(暂停则不触发)
             </summary>
+            <returns>是否阻止更改</returns>
         </member>
-        <member name="T:Apq.NotifyChange.PropertyChangeEventArgs">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.FireChanged(Apq.NotifyChange.ChangeEventArgs)">
             <summary>
-            属性更改事件参数
+            仅触发事件(暂停则不触发)
             </summary>
         </member>
-        <member name="M:Apq.NotifyChange.PropertyChangeEventArgs.#ctor(System.String)">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.Clear">
             <summary>
-            属性更改事件参数
+            清空
             </summary>
+            <remarks>仅支持更改后事件</remarks>
         </member>
-        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.PropertyName">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.Insert(System.Int32,`0)">
             <summary>
-            属性名
+            在指定索引位置插入项
             </summary>
+            <param name="index">如果索引超出范围,则视为添加</param>
+            <param name="item"></param>
         </member>
-        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.Cancel">
+        <member name="M:Apq.NotifyChange.NotifyChangeProperty`1.RemoveAll(System.Func{`0,System.Boolean})">
             <summary>
-            指示是否取消(中断后续流程)
+            移除满足条件的所有项
             </summary>
         </member>
-        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.OriginalValue">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.Value">
             <summary>
-            
+            当前
             </summary>
+            <remarks>取列表中的第一个值</remarks>
         </member>
-        <member name="P:Apq.NotifyChange.PropertyChangeEventArgs.NewValue">
+        <member name="P:Apq.NotifyChange.NotifyChangeProperty`1.HasValue">
             <summary>
-            
+            属性是否有
             </summary>
         </member>
         <member name="T:Apq.PlAccessor.PHP.QueryStringBuilder">
@@ -4917,6 +4842,11 @@
              Returns a collection of entries that represent items in the dictionary.
             </summary>
         </member>
+        <member name="T:Apq.Props.PropBase">
+            <summary>
+            属性基类
+            </summary>
+        </member>
         <member name="T:Apq.RandomString">
             <summary>
             随机字符串生成器