private void RegisterModules(ContainerBuilder builder)
        {
            var solutionsProvider  = new SolutionAssembliesProvider();
            var solutionAssemblies = solutionsProvider.GetSolutionAssemblies();

            foreach (var solutionAssembly in solutionAssemblies)
            {
                var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
                var assembly         = loadedAssemblies.FirstOrDefault(asm => asm.Location == solutionAssembly.FullName);
                if (assembly == null)
                {
                    assembly = Assembly.LoadFile(solutionAssembly.FullName);
                }

                var allTypes   = assembly.GetTypes();
                var rightTypes = allTypes
                                 .Where(type => type.IsSubclassOf(typeof(AutofacProfileConfiger)))
                                 .ToArray();

                foreach (var rightType in rightTypes)
                {
                    var profileConfiger = Activator.CreateInstance(rightType) as AutofacProfileConfiger;
                    profileConfiger.ConfigureMappings(builder);
                }
            }

            // Register AutoMapper
            var autoMapperTool = new AutoMapperTool();
            var mapper         = autoMapperTool.GetConfiguredMapper();

            builder.RegisterInstance(mapper).As <IMapper>();
        }
예제 #2
0
        private void ConfigureAllProfiles(IMapperConfigurationExpression expression)
        {
            var solutionsProvider   = new SolutionAssembliesProvider();
            var escortAssemblyFiles = solutionsProvider.GetSolutionAssemblies();

            foreach (var assemblyFile in escortAssemblyFiles)
            {
                var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
                var assembly         = loadedAssemblies.FirstOrDefault(asm => asm.Location == assemblyFile.FullName);
                if (assembly == null)
                {
                    assembly = Assembly.LoadFile(assemblyFile.FullName);
                }

                var allTypes = assembly.GetTypes();
                foreach (var type in allTypes)
                {
                    if (type.BaseType?.FullName != typeof(AutomapperProfileConfiger).FullName)
                    {
                        continue;
                    }

                    var profileConfigerObj = Activator.CreateInstance(type);
                    var profileConfiger    = profileConfigerObj as AutomapperProfileConfiger;
                    profileConfiger.ConfigureMappings(expression);
                }
            }
        }