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