1515using Blog . Core . Common ;
1616using Blog . Core . Filter ;
1717using Blog . Core . Log ;
18+ using Blog . Core . Model ;
1819using log4net ;
1920using log4net . Config ;
2021using log4net . Repository ;
@@ -151,8 +152,6 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
151152
152153
153154 //就是这里
154-
155-
156155 var xmlPath = Path . Combine ( basePath , "Blog.Core.xml" ) ; //这个就是刚刚配置的xml文件名
157156 c . IncludeXmlComments ( xmlPath , true ) ; //默认的第二个参数是false,这个是controller的注释,记得修改
158157
@@ -290,13 +289,9 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
290289 builder . RegisterType < BlogCacheAOP > ( ) ; //可以直接替换其他拦截器
291290 builder . RegisterType < BlogLogAOP > ( ) ; //这样可以注入第二个
292291
293- //var assemblysServices1 = Assembly.Load("Blog.Core.Services");
294-
295-
296292 // ※※★※※ 如果你是第一次下载项目,请先F6编译,然后再F5执行,※※★※※
297- // ※※★※※ 因为解耦,bin文件夹没有以下两个dll文件,会报错,所以先编译生成这两个dll ※※★※※
298-
299293
294+ #region Service.dll 注入,有对应接口
300295 //获取项目绝对路径,请注意,这个是实现类的dll文件,不是接口 IService.dll ,注入容器当然是Activatore
301296 var servicesDllFile = Path . Combine ( basePath , "Blog.Core.Services.dll" ) ;
302297 var assemblysServices = Assembly . LoadFile ( servicesDllFile ) ; //直接采用加载文件的方法
@@ -308,11 +303,34 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
308303 . InstancePerLifetimeScope ( )
309304 . EnableInterfaceInterceptors ( ) //引用Autofac.Extras.DynamicProxy;
310305 // 如果你想注入两个,就这么写 InterceptedBy(typeof(BlogCacheAOP), typeof(BlogLogAOP));
311- . InterceptedBy ( typeof ( BlogCacheAOP ) ) ; //允许将拦截器服务的列表分配给注册。
306+ . InterceptedBy ( typeof ( BlogCacheAOP ) ) ; //允许将拦截器服务的列表分配给注册。
307+ #endregion
312308
309+ #region Repository.dll 注入,有对应接口
313310 var repositoryDllFile = Path . Combine ( basePath , "Blog.Core.Repository.dll" ) ;
314311 var assemblysRepository = Assembly . LoadFile ( repositoryDllFile ) ;
315312 builder . RegisterAssemblyTypes ( assemblysRepository ) . AsImplementedInterfaces ( ) ;
313+ #endregion
314+
315+ #region 其他注入
316+
317+ #region 没有接口的 dll 层注入
318+
319+ ////因为没有接口层,所以不能实现解耦,只能用 Load 方法。
320+ ////var assemblysServicesNoInterfaces = Assembly.Load("Blog.Core.Services");
321+ ////builder.RegisterAssemblyTypes(assemblysServicesNoInterfaces);
322+
323+ #endregion
324+
325+ #region 没有接口的单独类 class 注入
326+ ////只能注入该类中的虚方法
327+ builder . RegisterAssemblyTypes ( Assembly . GetAssembly ( typeof ( Love ) ) )
328+ . EnableClassInterceptors ( )
329+ . InterceptedBy ( typeof ( BlogLogAOP ) ) ;
330+
331+ #endregion
332+
333+ #endregion
316334
317335 //将services填充到Autofac容器生成器中
318336 builder . Populate ( services ) ;
0 commit comments