Пример #1
0
        /// <summary>
        /// Creates a cached map instance. Initialize the mapping rule with custom mappings in type initializers or in app start. But only once in your application.
        /// </summary>
        /// <typeparam name="TInn">The type to convert from</typeparam>
        /// <typeparam name="TOut">The type to convert to</typeparam>
        /// <returns>a converted instance of the in instance</returns>
        public static IMapContainer <TInn, TOut> CreateMapRule <TInn, TOut>(bool doMerge)
        {
            var    timer = Stopwatch.StartNew();
            var    key   = new KeyValuePair <Type, Type>(typeof(TInn), typeof(TOut));
            object container;

            if (!cache.TryGetValue(key, out container))
            {
                var map = new MapContainer <TInn, TOut>();
                map.AddMap(doMerge);
                if (!cache.ContainsKey(key))
                {
                    cache.TryAdd(key, map);
                }
                ElapsedTime = timer.ElapsedMilliseconds;
                return(map);
            }
            ElapsedTime = timer.ElapsedMilliseconds;
            return((IMapContainer <TInn, TOut>)container);
        }