黄宗银 1 年之前
父節點
當前提交
a54493dac6

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

@@ -741,11 +741,12 @@
           }
         }
       },
-      "Oracle.ManagedDataAccess.Core/3.21.130": {
+      "Oracle.ManagedDataAccess.Core/3.21.140": {
         "dependencies": {
           "System.Diagnostics.PerformanceCounter": "6.0.1",
           "System.DirectoryServices": "6.0.1",
-          "System.DirectoryServices.Protocols": "6.0.2"
+          "System.DirectoryServices.Protocols": "6.0.2",
+          "System.Security.Cryptography.Pkcs": "8.0.0"
         },
         "runtime": {
           "lib/netstandard2.1/Oracle.ManagedDataAccess.dll": {
@@ -1471,7 +1472,7 @@
           "MySql.Data": "8.3.0",
           "NCrontab": "3.3.3",
           "Newtonsoft.Json": "13.0.3",
-          "Oracle.ManagedDataAccess.Core": "3.21.130",
+          "Oracle.ManagedDataAccess.Core": "3.21.140",
           "System.CodeDom": "8.0.0",
           "System.Data.SQLite": "1.0.118",
           "System.Data.SqlClient": "4.8.6",
@@ -1985,12 +1986,12 @@
       "path": "newtonsoft.json/13.0.3",
       "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
     },
-    "Oracle.ManagedDataAccess.Core/3.21.130": {
+    "Oracle.ManagedDataAccess.Core/3.21.140": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-bXNwPyAaDivO84HEYiegK7r/LleSEfA0nc70bE88wkqd1E0Q1+r/SUbJ51xOK2vk6iHbTSMuhnC79BU8svPBjQ==",
-      "path": "oracle.manageddataaccess.core/3.21.130",
-      "hashPath": "oracle.manageddataaccess.core.3.21.130.nupkg.sha512"
+      "sha512": "sha512-F1c4adtCGe6C+h04fryfAeRC3XsTG73Xd6vYhpD/6ABfdWo4IOTLy8EZs4vhya2+OR0BME/751Y3BCZcWdNYiQ==",
+      "path": "oracle.manageddataaccess.core/3.21.140",
+      "hashPath": "oracle.manageddataaccess.core.3.21.140.nupkg.sha512"
     },
     "Quartz/3.8.1": {
       "type": "package",

二進制
Debug/net8.0/Apq.Web5.dll


二進制
Debug/net8.0/Apq.Web5.pdb


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

@@ -21,7 +21,7 @@
           "MySql.Data": "8.3.0",
           "NCrontab": "3.3.3",
           "Newtonsoft.Json": "13.0.3",
-          "Oracle.ManagedDataAccess.Core": "3.21.130",
+          "Oracle.ManagedDataAccess.Core": "3.21.140",
           "System.CodeDom": "8.0.0",
           "System.Data.SQLite": "1.0.118",
           "System.Data.SqlClient": "4.8.6",
@@ -867,11 +867,12 @@
           }
         }
       },
-      "Oracle.ManagedDataAccess.Core/3.21.130": {
+      "Oracle.ManagedDataAccess.Core/3.21.140": {
         "dependencies": {
           "System.Diagnostics.PerformanceCounter": "6.0.1",
           "System.DirectoryServices": "6.0.1",
-          "System.DirectoryServices.Protocols": "6.0.2"
+          "System.DirectoryServices.Protocols": "6.0.2",
+          "System.Security.Cryptography.Pkcs": "8.0.0"
         },
         "runtime": {
           "lib/netstandard2.1/Oracle.ManagedDataAccess.dll": {
@@ -2028,12 +2029,12 @@
       "path": "newtonsoft.json/13.0.3",
       "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
     },
-    "Oracle.ManagedDataAccess.Core/3.21.130": {
+    "Oracle.ManagedDataAccess.Core/3.21.140": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-bXNwPyAaDivO84HEYiegK7r/LleSEfA0nc70bE88wkqd1E0Q1+r/SUbJ51xOK2vk6iHbTSMuhnC79BU8svPBjQ==",
-      "path": "oracle.manageddataaccess.core/3.21.130",
-      "hashPath": "oracle.manageddataaccess.core.3.21.130.nupkg.sha512"
+      "sha512": "sha512-F1c4adtCGe6C+h04fryfAeRC3XsTG73Xd6vYhpD/6ABfdWo4IOTLy8EZs4vhya2+OR0BME/751Y3BCZcWdNYiQ==",
+      "path": "oracle.manageddataaccess.core/3.21.140",
+      "hashPath": "oracle.manageddataaccess.core.3.21.140.nupkg.sha512"
     },
     "runtime.native.System.Data.SqlClient.sni/4.7.0": {
       "type": "package",

二進制
Debug/net8.0/Apq.dll


二進制
Debug/net8.0/Apq.pdb


+ 65 - 55
Debug/net8.0/Apq.xml

@@ -190,14 +190,14 @@
             通用类型转换。
             </summary>
         </member>
-        <member name="M:Apq.Cast.TryChangeType``1(System.Object)">
+        <member name="M:Apq.Cast.ChangeTypeT``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)">
+        <member name="M:Apq.Cast.ChangeTypeT``1(System.Object,``0)">
             <summary>
             通用类型转换,失败时返回 fValue
             </summary>
@@ -205,22 +205,19 @@
             <param name="obj">原始对象</param>
             <param name="fValue">转换失败时返回的值</param>
         </member>
-        <member name="M:Apq.Cast.TryChangeType(System.Object,System.Type,System.Object)">
+        <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>
         </member>
-        <member name="M:Apq.Cast.ChangeType``1(System.Object)">
+        <member name="M:Apq.Cast.TryChangeTypeT``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)">
+        <member name="M:Apq.Cast.TryChangeTypeT``1(System.Object,``0)">
             <summary>
             通用类型转换,失败时返回 fValue
             </summary>
@@ -228,22 +225,17 @@
             <param name="obj">原始对象</param>
             <param name="fValue">转换失败时返回的值</param>
         </member>
-        <member name="M:Apq.Cast.ChangeType(System.Object,System.Type,System.Object)">
+        <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>
-            <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})">
+        <member name="M:Apq.Cast.BytesToHexString(System.Collections.Generic.ICollection{System.Byte})">
             <summary>
             将字节串转换为16进制字符串
             </summary>
@@ -2656,24 +2648,6 @@
             表示已暂停处理的代理
             </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的扩展方法
@@ -2828,14 +2802,34 @@
             按循环索引获取子项
             </summary>
         </member>
-        <member name="T:Apq.Extension.Ext_JsonSerializeClone">
+        <member name="T:Apq.Extension.Ext_Json">
+            <summary>
+            Json串的扩展方法
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Json.ToJsonStr(System.Object)">
+            <summary>
+            转为json字符串
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Json.FromJsonStr(System.String)">
+            <summary>
+            json字符串转为C#对象(字典、列表、值)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Json.ToJList(Newtonsoft.Json.Linq.JArray)">
+            <summary>
+            转为列表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Json.ToJDic(Newtonsoft.Json.Linq.JObject)">
             <summary>
-            通过JSON序列化和反序列化实现的深复制
+            转为字典
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_JsonSerializeClone.JsonSerializeClone``1(``0)">
+        <member name="M:Apq.Extension.Ext_Json.DeepCloneByJson``1(``0)">
             <summary>
-            通过序列化实现的深复制(要求类已标记为可序列化)
+            基于Json互转的深复制
             </summary>
         </member>
         <member name="T:Apq.Extension.Ext_MsSql">
@@ -3080,6 +3074,11 @@
             [反射]System.Object的基础扩展
             </summary>
         </member>
+        <member name="M:Apq.Extension.Ext_Object.GetOriginValueInNullable(System.Object)">
+            <summary>
+            取出可空类型的原始值与类型
+            </summary>
+        </member>
         <member name="M:Apq.Extension.Ext_Object.LikeDBNull(System.Object)">
             <summary>
             返回指定对象是否与 DBNull 具有相似意义[仿JScrip]{null,DBNull,string.Empty}
@@ -3128,34 +3127,40 @@
             浅复制,无类型转换
             </remarks>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.LoadPropertyValues(System.Object,System.Collections.Generic.IDictionary{System.String,System.Object})">
+        <member name="M:Apq.Extension.Ext_Object.ToDic(System.Object,System.Boolean,System.Boolean)">
             <summary>
-            [递归]从字典中加载属性值
+            [递归]转为字典类型[Dictionary&lt;string, object?&gt;](只取可读属性和字段,浅复制,无类型转换)
             </summary>
-            <param name="dic"></param>
+            <remarks>
+            主要用于匿名实例和EF查询里的实体转换
+            </remarks>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.ToString_Fast(System.Object,System.String)">
+        <member name="M:Apq.Extension.Ext_Object.FromDic(System.Object,System.Collections.Generic.IDictionary{System.String,System.Object})">
             <summary>
-            快速转换为字符串(支持类型有限)
+            [递归]从字典中加载可写属性和字段值
             </summary>
-            <param name="obj">原始对象</param>
-            <param name="failedString">转换失败时返回此参数值</param>
+            <param name="dic"></param>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.ToDic(System.Object,System.Boolean,System.Boolean)">
+        <member name="M:Apq.Extension.Ext_Object.ToDynamic(System.Object,System.Boolean,System.Boolean)">
             <summary>
-            [递归]转为字典类型(只取属性,浅复制,无类型转换)
+            [递归]转为动态类型[ExpandoObject](只取可读属性和字段,浅复制,无类型转换)
             </summary>
             <remarks>
             主要用于匿名实例和EF查询里的实体转换
             </remarks>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.ToDynamic(System.Object,System.Boolean,System.Boolean)">
+        <member name="M:Apq.Extension.Ext_Object.FromDynamic(System.Object,System.Dynamic.ExpandoObject)">
             <summary>
-            [递归]转为动态类型(只取属性,浅复制,无类型转换)
+            [递归]从动态类型[ExpandoObject]中加载可写属性和字段值
             </summary>
-            <remarks>
-            主要用于匿名实例和EF查询里的实体转换
-            </remarks>
+            <param name="dic"></param>
+        </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="T:Apq.Extension.Ext_ObservableCollection">
             <summary>
@@ -3248,6 +3253,11 @@
             反射扩展
             </summary>
         </member>
+        <member name="M:Apq.Extension.Ext_Reflection.IsNullable(System.Type)">
+            <summary>
+            是否为可空类型
+            </summary>
+        </member>
         <member name="M:Apq.Extension.Ext_Reflection.IsAnonymous(System.Reflection.MemberInfo)">
             <summary>
             是否为匿名代码(如:匿名类、Lambda块)
@@ -3488,9 +3498,9 @@
             判断字符串是否为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)">
+        <member name="M:Apq.Extension.Ext_String.DivestNum``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">

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

@@ -741,11 +741,12 @@
           }
         }
       },
-      "Oracle.ManagedDataAccess.Core/3.21.130": {
+      "Oracle.ManagedDataAccess.Core/3.21.140": {
         "dependencies": {
           "System.Diagnostics.PerformanceCounter": "6.0.1",
           "System.DirectoryServices": "6.0.1",
-          "System.DirectoryServices.Protocols": "6.0.2"
+          "System.DirectoryServices.Protocols": "6.0.2",
+          "System.Security.Cryptography.Pkcs": "8.0.0"
         },
         "runtime": {
           "lib/netstandard2.1/Oracle.ManagedDataAccess.dll": {
@@ -1471,7 +1472,7 @@
           "MySql.Data": "8.3.0",
           "NCrontab": "3.3.3",
           "Newtonsoft.Json": "13.0.3",
-          "Oracle.ManagedDataAccess.Core": "3.21.130",
+          "Oracle.ManagedDataAccess.Core": "3.21.140",
           "System.CodeDom": "8.0.0",
           "System.Data.SQLite": "1.0.118",
           "System.Data.SqlClient": "4.8.6",
@@ -1985,12 +1986,12 @@
       "path": "newtonsoft.json/13.0.3",
       "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
     },
-    "Oracle.ManagedDataAccess.Core/3.21.130": {
+    "Oracle.ManagedDataAccess.Core/3.21.140": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-bXNwPyAaDivO84HEYiegK7r/LleSEfA0nc70bE88wkqd1E0Q1+r/SUbJ51xOK2vk6iHbTSMuhnC79BU8svPBjQ==",
-      "path": "oracle.manageddataaccess.core/3.21.130",
-      "hashPath": "oracle.manageddataaccess.core.3.21.130.nupkg.sha512"
+      "sha512": "sha512-F1c4adtCGe6C+h04fryfAeRC3XsTG73Xd6vYhpD/6ABfdWo4IOTLy8EZs4vhya2+OR0BME/751Y3BCZcWdNYiQ==",
+      "path": "oracle.manageddataaccess.core/3.21.140",
+      "hashPath": "oracle.manageddataaccess.core.3.21.140.nupkg.sha512"
     },
     "Quartz/3.8.1": {
       "type": "package",

二進制
Release/net8.0/Apq.Web5.dll


二進制
Release/net8.0/Apq.Web5.pdb


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

@@ -21,7 +21,7 @@
           "MySql.Data": "8.3.0",
           "NCrontab": "3.3.3",
           "Newtonsoft.Json": "13.0.3",
-          "Oracle.ManagedDataAccess.Core": "3.21.130",
+          "Oracle.ManagedDataAccess.Core": "3.21.140",
           "System.CodeDom": "8.0.0",
           "System.Data.SQLite": "1.0.118",
           "System.Data.SqlClient": "4.8.6",
@@ -867,11 +867,12 @@
           }
         }
       },
-      "Oracle.ManagedDataAccess.Core/3.21.130": {
+      "Oracle.ManagedDataAccess.Core/3.21.140": {
         "dependencies": {
           "System.Diagnostics.PerformanceCounter": "6.0.1",
           "System.DirectoryServices": "6.0.1",
-          "System.DirectoryServices.Protocols": "6.0.2"
+          "System.DirectoryServices.Protocols": "6.0.2",
+          "System.Security.Cryptography.Pkcs": "8.0.0"
         },
         "runtime": {
           "lib/netstandard2.1/Oracle.ManagedDataAccess.dll": {
@@ -2028,12 +2029,12 @@
       "path": "newtonsoft.json/13.0.3",
       "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
     },
-    "Oracle.ManagedDataAccess.Core/3.21.130": {
+    "Oracle.ManagedDataAccess.Core/3.21.140": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-bXNwPyAaDivO84HEYiegK7r/LleSEfA0nc70bE88wkqd1E0Q1+r/SUbJ51xOK2vk6iHbTSMuhnC79BU8svPBjQ==",
-      "path": "oracle.manageddataaccess.core/3.21.130",
-      "hashPath": "oracle.manageddataaccess.core.3.21.130.nupkg.sha512"
+      "sha512": "sha512-F1c4adtCGe6C+h04fryfAeRC3XsTG73Xd6vYhpD/6ABfdWo4IOTLy8EZs4vhya2+OR0BME/751Y3BCZcWdNYiQ==",
+      "path": "oracle.manageddataaccess.core/3.21.140",
+      "hashPath": "oracle.manageddataaccess.core.3.21.140.nupkg.sha512"
     },
     "runtime.native.System.Data.SqlClient.sni/4.7.0": {
       "type": "package",

二進制
Release/net8.0/Apq.dll


二進制
Release/net8.0/Apq.pdb


+ 65 - 55
Release/net8.0/Apq.xml

@@ -190,14 +190,14 @@
             通用类型转换。
             </summary>
         </member>
-        <member name="M:Apq.Cast.TryChangeType``1(System.Object)">
+        <member name="M:Apq.Cast.ChangeTypeT``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)">
+        <member name="M:Apq.Cast.ChangeTypeT``1(System.Object,``0)">
             <summary>
             通用类型转换,失败时返回 fValue
             </summary>
@@ -205,22 +205,19 @@
             <param name="obj">原始对象</param>
             <param name="fValue">转换失败时返回的值</param>
         </member>
-        <member name="M:Apq.Cast.TryChangeType(System.Object,System.Type,System.Object)">
+        <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>
         </member>
-        <member name="M:Apq.Cast.ChangeType``1(System.Object)">
+        <member name="M:Apq.Cast.TryChangeTypeT``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)">
+        <member name="M:Apq.Cast.TryChangeTypeT``1(System.Object,``0)">
             <summary>
             通用类型转换,失败时返回 fValue
             </summary>
@@ -228,22 +225,17 @@
             <param name="obj">原始对象</param>
             <param name="fValue">转换失败时返回的值</param>
         </member>
-        <member name="M:Apq.Cast.ChangeType(System.Object,System.Type,System.Object)">
+        <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>
-            <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})">
+        <member name="M:Apq.Cast.BytesToHexString(System.Collections.Generic.ICollection{System.Byte})">
             <summary>
             将字节串转换为16进制字符串
             </summary>
@@ -2656,24 +2648,6 @@
             表示已暂停处理的代理
             </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的扩展方法
@@ -2828,14 +2802,34 @@
             按循环索引获取子项
             </summary>
         </member>
-        <member name="T:Apq.Extension.Ext_JsonSerializeClone">
+        <member name="T:Apq.Extension.Ext_Json">
+            <summary>
+            Json串的扩展方法
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Json.ToJsonStr(System.Object)">
+            <summary>
+            转为json字符串
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Json.FromJsonStr(System.String)">
+            <summary>
+            json字符串转为C#对象(字典、列表、值)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Json.ToJList(Newtonsoft.Json.Linq.JArray)">
+            <summary>
+            转为列表
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_Json.ToJDic(Newtonsoft.Json.Linq.JObject)">
             <summary>
-            通过JSON序列化和反序列化实现的深复制
+            转为字典
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_JsonSerializeClone.JsonSerializeClone``1(``0)">
+        <member name="M:Apq.Extension.Ext_Json.DeepCloneByJson``1(``0)">
             <summary>
-            通过序列化实现的深复制(要求类已标记为可序列化)
+            基于Json互转的深复制
             </summary>
         </member>
         <member name="T:Apq.Extension.Ext_MsSql">
@@ -3080,6 +3074,11 @@
             [反射]System.Object的基础扩展
             </summary>
         </member>
+        <member name="M:Apq.Extension.Ext_Object.GetOriginValueInNullable(System.Object)">
+            <summary>
+            取出可空类型的原始值与类型
+            </summary>
+        </member>
         <member name="M:Apq.Extension.Ext_Object.LikeDBNull(System.Object)">
             <summary>
             返回指定对象是否与 DBNull 具有相似意义[仿JScrip]{null,DBNull,string.Empty}
@@ -3128,34 +3127,40 @@
             浅复制,无类型转换
             </remarks>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.LoadPropertyValues(System.Object,System.Collections.Generic.IDictionary{System.String,System.Object})">
+        <member name="M:Apq.Extension.Ext_Object.ToDic(System.Object,System.Boolean,System.Boolean)">
             <summary>
-            [递归]从字典中加载属性值
+            [递归]转为字典类型[Dictionary&lt;string, object?&gt;](只取可读属性和字段,浅复制,无类型转换)
             </summary>
-            <param name="dic"></param>
+            <remarks>
+            主要用于匿名实例和EF查询里的实体转换
+            </remarks>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.ToString_Fast(System.Object,System.String)">
+        <member name="M:Apq.Extension.Ext_Object.FromDic(System.Object,System.Collections.Generic.IDictionary{System.String,System.Object})">
             <summary>
-            快速转换为字符串(支持类型有限)
+            [递归]从字典中加载可写属性和字段值
             </summary>
-            <param name="obj">原始对象</param>
-            <param name="failedString">转换失败时返回此参数值</param>
+            <param name="dic"></param>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.ToDic(System.Object,System.Boolean,System.Boolean)">
+        <member name="M:Apq.Extension.Ext_Object.ToDynamic(System.Object,System.Boolean,System.Boolean)">
             <summary>
-            [递归]转为字典类型(只取属性,浅复制,无类型转换)
+            [递归]转为动态类型[ExpandoObject](只取可读属性和字段,浅复制,无类型转换)
             </summary>
             <remarks>
             主要用于匿名实例和EF查询里的实体转换
             </remarks>
         </member>
-        <member name="M:Apq.Extension.Ext_Object.ToDynamic(System.Object,System.Boolean,System.Boolean)">
+        <member name="M:Apq.Extension.Ext_Object.FromDynamic(System.Object,System.Dynamic.ExpandoObject)">
             <summary>
-            [递归]转为动态类型(只取属性,浅复制,无类型转换)
+            [递归]从动态类型[ExpandoObject]中加载可写属性和字段值
             </summary>
-            <remarks>
-            主要用于匿名实例和EF查询里的实体转换
-            </remarks>
+            <param name="dic"></param>
+        </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="T:Apq.Extension.Ext_ObservableCollection">
             <summary>
@@ -3248,6 +3253,11 @@
             反射扩展
             </summary>
         </member>
+        <member name="M:Apq.Extension.Ext_Reflection.IsNullable(System.Type)">
+            <summary>
+            是否为可空类型
+            </summary>
+        </member>
         <member name="M:Apq.Extension.Ext_Reflection.IsAnonymous(System.Reflection.MemberInfo)">
             <summary>
             是否为匿名代码(如:匿名类、Lambda块)
@@ -3488,9 +3498,9 @@
             判断字符串是否为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)">
+        <member name="M:Apq.Extension.Ext_String.DivestNum``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">