/// <summary>
        /// Registers the automapper profiles.
        /// </summary>
        /// <param name="registerer">The container.</param>
        /// <param name="assembly">The assembly.</param>
        /// <returns></returns>
        public static IIocRegisterer RegisterAutomapperProfilesFromAssembly(this IIocRegisterer registerer, Assembly assembly)
        {
            var mapperConfigurationInterfaceType = typeof(IMapperConfiguration <>);
            var mapperInterfaceType     = typeof(IMapper <>);
            var mapperConfigurationType = typeof(MapperConfiguration <>);
            var mapperType = typeof(Mapper <>);

            var reflectionService = registerer.Resolver.Resolve <IReflectionService>();

            var profileTypes = reflectionService.GetTypesFromBaseTypeInAssembly <Profile>(assembly);

            foreach (var profileType in profileTypes)
            {
                if (!registerer.HasComponent(profileType))
                {
                    registerer.RegisterScoped(profileType, profileType);
                }

                var mapperConfigurationInterface = mapperConfigurationInterfaceType.MakeGenericType(profileType);
                if (!registerer.HasComponent(mapperConfigurationInterface))
                {
                    var mapperConfiguration = mapperConfigurationType.MakeGenericType(profileType);
                    registerer.RegisterSingleton(mapperConfigurationInterface, mapperConfiguration);
                }

                var mapperInterface = mapperInterfaceType.MakeGenericType(profileType);
                if (!registerer.HasComponent(mapperInterface))
                {
                    var mapper = mapperType.MakeGenericType(profileType);
                    registerer.RegisterScoped(mapperInterface, mapper);
                }
            }

            return(registerer);
        }
        /// <summary>
        /// Adds the configuration instance to windsor container.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <returns>The configuration instance</returns>
        public static IIocRegisterer AddAutomapper(this IIocRegisterer container)
        {
            container.RegisterSingleton(typeof(IMapperConfiguration <>), typeof(MapperConfiguration <>));
            container.RegisterTransient(typeof(IMapper <>), typeof(Mapper <>));

            return(container);
        }