| 123456789101112131415161718192021222324252627282930 | 
							- using System.Collections.Concurrent;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Reflection;
 
- namespace OpenSEMI.Core.Container
 
- {
 
-     internal class ParameterCache
 
-     {
 
-         private static ConcurrentDictionary<ConstructorInfo, List<ParameterInfo>> _parameterCache = new ConcurrentDictionary<ConstructorInfo, List<ParameterInfo>>();
 
-         public static List<ParameterInfo> GetParameters(ConstructorInfo constructor)
 
-         {
 
-             List<ParameterInfo> parameterInfo;
 
-             if (!_parameterCache.TryGetValue(constructor, out parameterInfo))
 
-             {
 
-                 // Not in cache, discover and add to cache.
 
-                 parameterInfo = _parameterCache[constructor] = DiscoverParameters(constructor);
 
-             }
 
-             return parameterInfo;
 
-         }
 
-         private static List<ParameterInfo> DiscoverParameters(ConstructorInfo constructor)
 
-         {
 
-             return constructor.GetParameters().ToList();
 
-         }
 
-     }
 
- }
 
 
  |