1
1
懒得勤快 1 жил өмнө
parent
commit
2506f0de1b

+ 17 - 54
Masuit.Tools.Abstractions/Extensions/BaseType/IDictionaryExtensions.cs

@@ -87,8 +87,6 @@ namespace Masuit.Tools
             }
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -123,8 +121,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#endif
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -144,8 +140,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -184,8 +178,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#endif
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -205,8 +197,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -243,8 +233,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#endif
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -264,8 +252,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -298,8 +284,6 @@ namespace Masuit.Tools
             }
         }
 
-#endif
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -316,8 +300,6 @@ namespace Masuit.Tools
             }
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -344,8 +326,6 @@ namespace Masuit.Tools
             return that.ForeachAsync(item => AddOrUpdateAsync(@this, item.Key, item.Value, updateValueFactory));
         }
 
-#endif
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -359,8 +339,6 @@ namespace Masuit.Tools
             return that.ForeachAsync(item => AddOrUpdateAsync(@this, item.Key, item.Value, updateValueFactory));
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -393,8 +371,6 @@ namespace Masuit.Tools
             }
         }
 
-#endif
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -411,8 +387,6 @@ namespace Masuit.Tools
             }
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -439,8 +413,6 @@ namespace Masuit.Tools
             return @this.ForeachAsync(item => AddOrUpdateAsync(that, item.Key, item.Value, updateValueFactory));
         }
 
-#endif
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -465,11 +437,7 @@ namespace Masuit.Tools
         /// <param name="updateValueFactory">更新时的操作</param>
         public static TValue AddOrUpdate<TKey, TValue>(this IDictionary<TKey, TValue> @this, TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory)
         {
-            if ([email protected](key))
-            {
-                @this.Add(key, addValueFactory(key));
-            }
-            else
+            if ([email protected](key, addValueFactory(key)))
             {
                 @this[key] = updateValueFactory(key, @this[key]);
             }
@@ -488,11 +456,7 @@ namespace Masuit.Tools
         /// <param name="updateValueFactory">更新时的操作</param>
         public static TValue AddOrUpdate<TKey, TValue>(this NullableDictionary<TKey, TValue> @this, TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory)
         {
-            if ([email protected](key))
-            {
-                @this.Add(key, addValueFactory(key));
-            }
-            else
+            if ([email protected](key, addValueFactory(key)))
             {
                 @this[key] = updateValueFactory(key, @this[key]);
             }
@@ -511,11 +475,7 @@ namespace Masuit.Tools
         /// <param name="updateValueFactory">更新时的操作</param>
         public static TValue AddOrUpdate<TKey, TValue>(this NullableConcurrentDictionary<TKey, TValue> @this, TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory)
         {
-            if ([email protected](key))
-            {
-                @this.TryAdd(key, addValueFactory(key));
-            }
-            else
+            if ([email protected](key, addValueFactory(key)))
             {
                 @this[key] = updateValueFactory(key, @this[key]);
             }
@@ -534,11 +494,7 @@ namespace Masuit.Tools
         /// <param name="updateValueFactory">更新时的操作</param>
         public static async Task<TValue> AddOrUpdateAsync<TKey, TValue>(this IDictionary<TKey, TValue> @this, TKey key, Func<TKey, Task<TValue>> addValueFactory, Func<TKey, TValue, Task<TValue>> updateValueFactory)
         {
-            if ([email protected](key))
-            {
-                @this.Add(key, await addValueFactory(key));
-            }
-            else
+            if ([email protected](key, await addValueFactory(key)))
             {
                 @this[key] = await updateValueFactory(key, @this[key]);
             }
@@ -546,8 +502,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -567,8 +521,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#endif
-
         /// <summary>
         /// 添加或更新键值对
         /// </summary>
@@ -624,8 +576,6 @@ namespace Masuit.Tools
             return @this[key];
         }
 
-#if NETSTANDARD2_1_OR_GREATER
-
         /// <summary>
         /// 获取或添加
         /// </summary>
@@ -639,6 +589,19 @@ namespace Masuit.Tools
             return @this.TryAdd(key, addValue) ? addValue : @this[key];
         }
 
+#if NETSTANDARD2_1_OR_GREATER
+#else
+
+        public static bool TryAdd<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue value) where TKey : notnull
+        {
+            if (dictionary == null)
+                throw new ArgumentNullException(nameof(dictionary));
+            if (dictionary.IsReadOnly||dictionary.ContainsKey(key))
+                return false;
+            dictionary.Add(key, value);
+            return true;
+        }
+
 #endif
 
         /// <summary>