IDependency 依赖注入接口,表示该接口的实现类将自动注册到IoC容器中
//autofac builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); builder.Host.ConfigureContainer<ContainerBuilder>(builder => { #region 手动注入 ////手动注入 //builder.RegisterType<AService>().As<IAService>().InstancePerLifetimeScope(); //builder.RegisterType<BService>().As<IBService>().InstancePerLifetimeScope(); #endregion #region 自动注入 //4、自动注册接口 //* 筛选出对应条件的接口 //* IsAssignableFrom:返回true的条件:是否直接或间接实现了IDependency //* IsAbstract:是否为抽象类 //* AsImplementedInterfaces:以接口的形式注册 //* InstancePerLifetimeScope:同一个Lifetime生成的对象是同一个实例 //Assembly assembly = Assembly.Load(Assembly.GetExecutingAssembly().GetName().Name); //var dataAccess = Assembly.GetExecutingAssembly(); //var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();//这种写法AppDomain重新启动后会丢失程序集 ////第一种 /* 获取接口类型 *通过IDependency标记需要依赖注入的接口 *注册所有实现了IDependency接口的类型 */ //Type type = typeof(IDependency); //var dataAccess = Assembly.GetExecutingAssembly(); //builder.RegisterAssemblyTypes(Assembly.Load("Dn.Core.Services")) // .Where(t => t.Name.EndsWith("Service"))//.As<IDependency>() // .AsImplementedInterfaces().InstancePerDependency(); ////第二种 //Type baseType = typeof(IDependency); ////var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();//这种写法AppDomain重新启动后会丢失程序集 //var assembly = Assembly.Load("Dn.Core.Services");//Assembly.GetEntryAssembly(); //builder.RegisterAssemblyTypes(assembly) // .Where(t => baseType.IsAssignableFrom(t) && t != baseType) // .AsImplementedInterfaces().InstancePerLifetimeScope(); #endregion });