懒得勤快 3 年之前
父節點
當前提交
c3f63e9137

+ 16 - 0
Masuit.Tools.Abstractions/Extensions/BaseType/IDictionaryExtensions.cs

@@ -24,6 +24,22 @@ namespace Masuit.Tools
             }
         }
 
+        /// <summary>
+        /// 添加或更新键值对
+        /// </summary>
+        /// <typeparam name="TKey"></typeparam>
+        /// <typeparam name="TValue"></typeparam>
+        /// <param name="this"></param>
+        /// <param name="that">另一个字典集</param>
+        /// <returns></returns>
+        public static void AddOrUpdate<TKey, TValue>(this NullableConcurrentDictionary<TKey, TValue> @this, IDictionary<TKey, TValue> that)
+        {
+            foreach (var item in that)
+            {
+                @this[item.Key] = item.Value;
+            }
+        }
+
         /// <summary>
         /// 添加或更新键值对
         /// </summary>

+ 2 - 2
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -4,7 +4,7 @@
     <LangVersion>latest</LangVersion>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <CodeAnalysisRuleSet />
-    <Version>2.4.7.5</Version>
+    <Version>2.4.7.6</Version>
     <Authors>懒得勤快</Authors>
     <Description>Masuit.Tools基础公共库,包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。</Description>
     <Copyright>懒得勤快,长空X</Copyright>
@@ -42,7 +42,7 @@
 
   <ItemGroup>
     <PackageReference Include="DnsClient" Version="1.6.0" />
-    <PackageReference Include="HtmlSanitizer" Version="7.1.475" />
+    <PackageReference Include="HtmlSanitizer" Version="7.1.488" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
     <PackageReference Include="System.ComponentModel.Annotations" Version="4.7.0" />
     <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="4.7.0" />

+ 7 - 16
Masuit.Tools.Abstractions/Reflection/ReflectionUtil.cs

@@ -19,10 +19,7 @@ namespace Masuit.Tools.Reflection
     {
         #region 属性字段设置
 
-#pragma warning disable 1591
         public static BindingFlags bf = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
-#pragma warning restore 1591
-        private static readonly ConcurrentDictionary<string, Delegate> _delegatesCache = new();
 
         /// <summary>
         /// 执行方法
@@ -94,7 +91,7 @@ namespace Masuit.Tools.Reflection
         {
             var parameter = Expression.Parameter(typeof(T), "e");
             var property = Expression.PropertyOrField(parameter, name);
-            var before = _delegatesCache.GetOrAdd(typeof(T) + "Get" + name, () => Expression.Lambda(property, parameter).Compile()).DynamicInvoke(obj);
+            var before = Expression.Lambda(property, parameter).Compile().DynamicInvoke(obj);
             if (value.Equals(before))
             {
                 return value.ToString();
@@ -106,12 +103,9 @@ namespace Masuit.Tools.Reflection
             }
             else
             {
-                _delegatesCache.GetOrAdd(typeof(T) + "Set" + name, () =>
-                {
-                    var valueExpression = Expression.Parameter(value.GetType(), "v");
-                    var assign = Expression.Assign(property, valueExpression);
-                    return Expression.Lambda(assign, parameter, valueExpression).Compile();
-                }).DynamicInvoke(obj, value);
+                var valueExpression = Expression.Parameter(value.GetType(), "v");
+                var assign = Expression.Assign(property, valueExpression);
+                Expression.Lambda(assign, parameter, valueExpression).Compile().DynamicInvoke(obj, value);
             }
 
             return before.ToJsonString();
@@ -126,12 +120,9 @@ namespace Masuit.Tools.Reflection
         /// <returns>T类型</returns>
         public static T GetProperty<T>(this object obj, string name)
         {
-            return (T)_delegatesCache.GetOrAdd(obj.GetType() + "Get" + name, () =>
-            {
-                var parameter = Expression.Parameter(obj.GetType(), "e");
-                var property = Expression.PropertyOrField(parameter, name);
-                return Expression.Lambda(property, parameter).Compile();
-            }).DynamicInvoke(obj);
+            var parameter = Expression.Parameter(obj.GetType(), "e");
+            var property = Expression.PropertyOrField(parameter, name);
+            return (T)Expression.Lambda(property, parameter).Compile().DynamicInvoke(obj);
         }
 
         /// <summary>

+ 3 - 3
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -18,7 +18,7 @@ github:https://github.com/ldqk/Masuit.Tools
         <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
         <RepositoryType>Github</RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>2.4.7.5</Version>
+        <Version>2.4.7.6</Version>
         <FileVersion>2.4.5.6</FileVersion>
         <Company>masuit.com</Company>
         <AssemblyVersion>2.4.5.6</AssemblyVersion>
@@ -31,7 +31,7 @@ github:https://github.com/ldqk/Masuit.Tools
 
     <ItemGroup>
         <PackageReference Include="DnsClient" Version="1.6.0" />
-        <PackageReference Include="HtmlSanitizer" Version="7.1.475" />
+        <PackageReference Include="HtmlSanitizer" Version="7.1.488" />
         <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
         <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="4.7.0" />
         <PackageReference Include="System.Management" Version="4.7.0" />
@@ -64,7 +64,7 @@ github:https://github.com/ldqk/Masuit.Tools
     </ItemGroup>
     <ItemGroup Condition=" '$(TargetFramework)' == 'net6'">
         <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
-        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.1" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.2" />
         <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0" />
         <PackageReference Include="Microsoft.Extensions.Http" Version="6.0" />
         <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="6.0" />

+ 1 - 1
Masuit.Tools.Net45/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <id>Masuit.Tools.Net45</id>
     <!--*-->
-    <version>2.4.7.5</version>
+    <version>2.4.7.6</version>
     <title>Masuit.Tools</title>
     <!--*-->
     <authors>懒得勤快</authors>

+ 1 - 1
Masuit.Tools/Masuit.Tools.csproj

@@ -175,7 +175,7 @@
       <Version>1.6.0</Version>
     </PackageReference>
     <PackageReference Include="HtmlSanitizer">
-      <Version>7.1.475</Version>
+      <Version>7.1.488</Version>
     </PackageReference>
     <PackageReference Include="Microsoft.AspNet.Mvc">
       <Version>5.2.7</Version>

+ 1 - 1
Masuit.Tools/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <id>Masuit.Tools.Net</id>
     <!--*-->
-    <version>2.4.7.5</version>
+    <version>2.4.7.6</version>
     <title>Masuit.Tools</title>
     <!--*-->
     <authors>懒得勤快</authors>

+ 1 - 1
Test/Masuit.Tools.Abstractions.Test/Masuit.Tools.Abstractions.Test.csproj

@@ -13,7 +13,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
     <PackageReference Include="xunit" Version="2.4.1" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
       <PrivateAssets>all</PrivateAssets>

+ 3 - 3
Test/Masuit.Tools.Core.Test/Masuit.Tools.Core.Test.csproj

@@ -9,9 +9,9 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="6.0.1" />
-    <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.0" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="6.0.2" />
+    <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
     <PackageReference Include="xunit" Version="2.4.1" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
       <PrivateAssets>all</PrivateAssets>

+ 1 - 1
Test/Masuit.Tools.Test/Masuit.Tools.Test.csproj

@@ -96,7 +96,7 @@
       <Version>1.0.0</Version>
     </PackageReference>
     <PackageReference Include="Moq">
-      <Version>4.16.1</Version>
+      <Version>4.17.1</Version>
     </PackageReference>
     <PackageReference Include="MSTest.TestAdapter">
       <Version>2.2.8</Version>