Example #1
0
        /// <summary> Ioc注册 </summary>
        protected override void IocRegisters()
        {
            Builder = Builder ?? new ContainerBuilder();
            //注入程序集查找器
            var finder = new DefaultAssemblyFinder();

            Builder.RegisterInstance(finder).As <IAssemblyFinder>().SingleInstance();
            var assemblies = finder.FindAll().ToArray();

            Builder.RegisterAssemblyTypes(assemblies)
            .Where(type => typeof(IScopedDependency).IsAssignableFrom(type) && !type.IsAbstract)
            .AsSelf()                    //自身服务,用于没有接口的类
            .AsImplementedInterfaces()   //接口服务
            .PropertiesAutowired()       //属性注入
            .InstancePerLifetimeScope(); //保证生命周期基于请求

            Builder.RegisterAssemblyTypes(assemblies)
            .Where(type => typeof(IDependency).IsAssignableFrom(type) && !type.IsAbstract)
            .AsSelf()                  //自身服务,用于没有接口的类
            .AsImplementedInterfaces() //接口服务
            .PropertiesAutowired();    //属性注入

            Builder.RegisterAssemblyTypes(assemblies)
            .Where(type => typeof(ISingleDependency).IsAssignableFrom(type) && !type.IsAbstract)
            .AsSelf()                  //自身服务,用于没有接口的类
            .AsImplementedInterfaces() //接口服务
            .PropertiesAutowired()     //属性注入
            .SingleInstance();         //保证单例注入

            IocManager = new IocManager(this);
            CurrentIocManager.SetIocManager(IocManager);
            Builder.RegisterInstance(IocManager).AsSelf().As <IIocManager>().SingleInstance();
        }
        public void FindAssembly()
        {
            IAssemblyFinder      af         = new DefaultAssemblyFinder();
            IEnumerable <string> assemblies = af.GetAssemblies("RJDev.*")
                                              .Select(x => x.GetName().Name)
                                              .OrderBy(x => x);

            Assert.Collection(
                assemblies,
                name => Assert.Equal("RJDev.Core.Reflection", name),
                name => Assert.Equal("RJDev.Core.Reflection.Tests", name)
                );
        }