|  | @@ -10,13 +10,13 @@ namespace Admin.Core.Common.Extensions
 | 
											
												
													
														|  |             TKey key,
 |  |             TKey key,
 | 
											
												
													
														|  |             Func<TKey, TValue> factory)
 |  |             Func<TKey, TValue> factory)
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  | -            TValue value;
 |  | 
 | 
											
												
													
														|  | -            if (!dictionary.TryGetValue(key, out value))
 |  | 
 | 
											
												
													
														|  | 
 |  | +            TValue obj;
 | 
											
												
													
														|  | 
 |  | +            if (dictionary.TryGetValue(key, out obj))
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -                value = factory(key);
 |  | 
 | 
											
												
													
														|  | -                dictionary.Add(key, value);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                return obj;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  | -            return value;
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            return dictionary[key] = factory(key);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          public static TValue GetOrAdd<TKey, TValue>(
 |  |          public static TValue GetOrAdd<TKey, TValue>(
 | 
											
										
											
												
													
														|  | @@ -24,13 +24,7 @@ namespace Admin.Core.Common.Extensions
 | 
											
												
													
														|  |             TKey key,
 |  |             TKey key,
 | 
											
												
													
														|  |             Func<TValue> factory)
 |  |             Func<TValue> factory)
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  | -            TValue value;
 |  | 
 | 
											
												
													
														|  | -            if (!dictionary.TryGetValue(key, out value))
 |  | 
 | 
											
												
													
														|  | -            {
 |  | 
 | 
											
												
													
														|  | -                value = factory();
 |  | 
 | 
											
												
													
														|  | -                dictionary.Add(key, value);
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            return value;
 |  | 
 | 
											
												
													
														|  | 
 |  | +            return dictionary.GetOrAdd(key, k => factory());
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          public static TValue AddOrUpdate<TKey, TValue>(
 |  |          public static TValue AddOrUpdate<TKey, TValue>(
 | 
											
										
											
												
													
														|  | @@ -39,17 +33,17 @@ namespace Admin.Core.Common.Extensions
 | 
											
												
													
														|  |             Func<TKey, TValue> addFactory,
 |  |             Func<TKey, TValue> addFactory,
 | 
											
												
													
														|  |             Func<TKey, TValue, TValue> updateFactory)
 |  |             Func<TKey, TValue, TValue> updateFactory)
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  | -            TValue value;
 |  | 
 | 
											
												
													
														|  | -            if (dictionary.TryGetValue(key, out value))
 |  | 
 | 
											
												
													
														|  | 
 |  | +            TValue obj;
 | 
											
												
													
														|  | 
 |  | +            if (dictionary.TryGetValue(key, out obj))
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -                value = updateFactory(key, value);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                obj = updateFactory(key, obj);
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |              else
 |  |              else
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -                value = addFactory(key);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                obj = addFactory(key);
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  | -            dictionary[key] = value;
 |  | 
 | 
											
												
													
														|  | -            return value;
 |  | 
 | 
											
												
													
														|  | 
 |  | +            dictionary[key] = obj;
 | 
											
												
													
														|  | 
 |  | +            return obj;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          public static TValue AddOrUpdate<TKey, TValue>(
 |  |          public static TValue AddOrUpdate<TKey, TValue>(
 | 
											
										
											
												
													
														|  | @@ -58,17 +52,7 @@ namespace Admin.Core.Common.Extensions
 | 
											
												
													
														|  |             Func<TValue> addFactory,
 |  |             Func<TValue> addFactory,
 | 
											
												
													
														|  |             Func<TValue, TValue> updateFactory)
 |  |             Func<TValue, TValue> updateFactory)
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  | -            TValue value;
 |  | 
 | 
											
												
													
														|  | -            if (dictionary.TryGetValue(key, out value))
 |  | 
 | 
											
												
													
														|  | -            {
 |  | 
 | 
											
												
													
														|  | -                value = updateFactory(value);
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            else
 |  | 
 | 
											
												
													
														|  | -            {
 |  | 
 | 
											
												
													
														|  | -                value = addFactory();
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            dictionary[key] = value;
 |  | 
 | 
											
												
													
														|  | -            return value;
 |  | 
 | 
											
												
													
														|  | 
 |  | +            return dictionary.AddOrUpdate(key, k => addFactory(), (k, v) => updateFactory(v));
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  }
 |  |  }
 |