|
@@ -87,8 +87,6 @@ namespace Masuit.Tools
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -123,8 +121,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -144,8 +140,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -184,8 +178,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -205,8 +197,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -243,8 +233,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -264,8 +252,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -298,8 +284,6 @@ namespace Masuit.Tools
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -316,8 +300,6 @@ namespace Masuit.Tools
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -344,8 +326,6 @@ namespace Masuit.Tools
|
|
return that.ForeachAsync(item => AddOrUpdateAsync(@this, item.Key, item.Value, updateValueFactory));
|
|
return that.ForeachAsync(item => AddOrUpdateAsync(@this, item.Key, item.Value, updateValueFactory));
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -359,8 +339,6 @@ namespace Masuit.Tools
|
|
return that.ForeachAsync(item => AddOrUpdateAsync(@this, item.Key, item.Value, updateValueFactory));
|
|
return that.ForeachAsync(item => AddOrUpdateAsync(@this, item.Key, item.Value, updateValueFactory));
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -393,8 +371,6 @@ namespace Masuit.Tools
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -411,8 +387,6 @@ namespace Masuit.Tools
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -439,8 +413,6 @@ namespace Masuit.Tools
|
|
return @this.ForeachAsync(item => AddOrUpdateAsync(that, item.Key, item.Value, updateValueFactory));
|
|
return @this.ForeachAsync(item => AddOrUpdateAsync(that, item.Key, item.Value, updateValueFactory));
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -465,11 +437,7 @@ namespace Masuit.Tools
|
|
/// <param name="updateValueFactory">更新时的操作</param>
|
|
/// <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)
|
|
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]);
|
|
@this[key] = updateValueFactory(key, @this[key]);
|
|
}
|
|
}
|
|
@@ -488,11 +456,7 @@ namespace Masuit.Tools
|
|
/// <param name="updateValueFactory">更新时的操作</param>
|
|
/// <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)
|
|
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]);
|
|
@this[key] = updateValueFactory(key, @this[key]);
|
|
}
|
|
}
|
|
@@ -511,11 +475,7 @@ namespace Masuit.Tools
|
|
/// <param name="updateValueFactory">更新时的操作</param>
|
|
/// <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)
|
|
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]);
|
|
@this[key] = updateValueFactory(key, @this[key]);
|
|
}
|
|
}
|
|
@@ -534,11 +494,7 @@ namespace Masuit.Tools
|
|
/// <param name="updateValueFactory">更新时的操作</param>
|
|
/// <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)
|
|
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]);
|
|
@this[key] = await updateValueFactory(key, @this[key]);
|
|
}
|
|
}
|
|
@@ -546,8 +502,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -567,8 +521,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 添加或更新键值对
|
|
/// 添加或更新键值对
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -624,8 +576,6 @@ namespace Masuit.Tools
|
|
return @this[key];
|
|
return @this[key];
|
|
}
|
|
}
|
|
|
|
|
|
-#if NETSTANDARD2_1_OR_GREATER
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 获取或添加
|
|
/// 获取或添加
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -639,6 +589,19 @@ namespace Masuit.Tools
|
|
return @this.TryAdd(key, addValue) ? addValue : @this[key];
|
|
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
|
|
#endif
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|