/// <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)))); }
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>())); }