/// <summary>
        /// 统一注册服务程序集
        /// </summary>
        /// <param name="containerBuilder">容器生成器</param>
        /// <param name="param">参数</param>
        /// <param name="isExecBuilderContainer">是否执行生成容器,如果为false,则返回值为null</param>
        /// <returns>容器</returns>
        public static IContainer UnifiedRegisterAssemblys(this ContainerBuilder containerBuilder, BuilderParam param, bool isExecBuilderContainer = true)
        {
            var assemblyList = new List <Assembly>();

            foreach (var assembly in param.AssemblyServices)
            {
                Assembly[] assemblies = ReflectExtensions.Load(assembly.Names);
                if (assemblies.IsNullOrLength0())
                {
                    return(null);
                }
                assemblyList.AddRange(assemblies);

                var registerBuilder = containerBuilder.RegisterAssemblyTypes(assemblies)
                                      .PropertiesAutowired()
                                      .AsImplementedInterfaces()
                                      .Where(AutofacUtil.CanInject)
                                      .AsSelf();

                if (!assembly.InterceptedTypes.IsNullOrLength0())
                {
                    foreach (Type type in assembly.InterceptedTypes)
                    {
                        containerBuilder.RegisterType(type);
                    }

                    registerBuilder.InterceptedBy(assembly.InterceptedTypes).EnableClassInterceptors();
                }

                switch (assembly.Lifecycle)
                {
                case LifecycleType.DEPENDENCY:
                    registerBuilder.InstancePerDependency();

                    break;

                case LifecycleType.LIFETIME_SCOPE:
                    registerBuilder.InstancePerLifetimeScope();

                    break;

                case LifecycleType.MATCH_LIFETIME_SCOPE:
                    registerBuilder.InstancePerMatchingLifetimeScope(assembly.MatchTagNames);

                    break;

                case LifecycleType.REQUEST:
                    registerBuilder.InstancePerRequest();

                    break;

                case LifecycleType.SIGNLETON:
                    registerBuilder.SingleInstance();

                    break;
                }
            }

            if (param.RegisteringServiceAction != null)
            {
                param.RegisteringServiceAction();
            }

            if (isExecBuilderContainer)
            {
                AutofacTool.Container = containerBuilder.Build();
            }
            else
            {
                containerBuilder.RegisterBuildCallback(scope =>
                {
                    AutofacTool.LifetimeScope = scope;
                });
            }

            if (param.IsLoadAutoMapperConfig)
            {
                AutoMapperUtil.AutoRegisterConfig(assemblyList.ToArray());
            }

            return(AutofacTool.Container);
        }
 /// <summary>
 /// 统一注册服务程序集,如果是net core 3.1以上,请在StartUp类里增加ConfigureContainer(ContainerBuilder builder)方法,在该方法内执行
 /// </summary>
 /// <param name="containerBuilder">容器生成器</param>
 /// <param name="param">参数</param>
 public static void UnifiedRegisterAssemblysForWeb(this ContainerBuilder containerBuilder, BuilderParam param)
 {
     UnifiedRegisterAssemblys(containerBuilder, new BuilderParam()
     {
         AssemblyServices         = param.AssemblyServices,
         IsLoadAutoMapperConfig   = param.IsLoadAutoMapperConfig,
         RegisteringServiceAction = () =>
         {
             if (param.RegisteringServiceAction != null)
             {
                 param.RegisteringServiceAction();
             }
         }
     }, false);
 }