Ejemplo n.º 1
0
        /// <summary>
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public static IIocAppConfiguration UseAutofac(this IAppConfiguration configuration)
        {
            Ensure.NotNull(configuration, nameof(configuration));
            var registrar = new IocRegistrar(new ContainerBuilder());

            registrar.RegisterInstance(registrar);
            registrar.RegisterInstance <IIocRegistrar>(registrar);
            //registrar.RegisterInstance<IIocResolver>(registrar);//不能注册成实例(单例模式)
            registrar.Register <ILifetimeScopeProvider, LifetimeScopeProvider>();
            registrar.Register <IIocResolver, IocResolver>();
            registrar.Register <IIocScopeResolverFactory, AutofacServiceScopeFactory>();

            registrar.Register <DynamicProxyInterceptor>();

            return(configuration.CreateIocAppConfiguration(registrar,
                                                           new IocResolver(new LifetimeScopeProvider(registrar, null))));
        }
Ejemplo n.º 2
0
        public static IIocAppConfiguration UseDryIoc(this IAppConfiguration configuration)
        {
            Ensure.NotNull(configuration, nameof(configuration));
            var contaier = new Container(rules => rules
                                         //.WithAutoConcreteTypeResolution() 采用自动解决,会导入构造注入失败
                                         .With(InjectPropertiesSelector)
                                         .With(FactoryMethod.ConstructorWithResolvableArguments)
                                         .WithFactorySelector(Rules.SelectLastRegisteredFactory())
                                         .WithTrackingDisposableTransients()
                                         .WithImplicitRootOpenScope());

            var register = new IocRegistrar(contaier);

            register.RegisterInstance <IIocRegistrar>(register);
            register.Register <IIocResolver, IocResolver>();
            register.Register <IIocScopeResolverFactory, IocScopeResolverFactory>();

            return(configuration.CreateIocAppConfiguration(register, contaier.Resolve <IIocResolver>()));
        }