目的:在分层项目中,让各个项目负责各自的服务注册。
1、首先用NuGet控制台在各个项目都安装一个包:Install-Package Zack.Commons
2、在每个项目中创建一个或多个实现了IModuleInitializer接口的类
3、初始化DI容器:
var assemblies=ReflectionHelper.GetAllReferencedAssemblies();
Bulider.Services.RunModuleInitializers(assemblies);
4、新建一个Controller通过构造方法来调用,并将我们需要的类库添加依赖到Controller
5、 运行后的结果为
二、ASP.net Core中的内存缓存
1、启用:builder.Services.AddMemoryCache()
2、注入IMemoryCache接口,查看接口的方法:TryGetValue、Remove、Set、GetOrCreate、GetOrCreateAsync
3、用GetOrCreateAsync讲解(用起来比较方便,开始在缓存区里找,找不到会去数据源那获取,获取后返回给调用者并且会存在缓存区)
public async Task<book[]> GetBooks()
{
logger.LogInformation("开始执行GetBooks");
var items=await memCache.GetOrCreateAsync("AllBooks",async(e)=>
{
Iogger.LogInformation("从数据库中读取数据")
return await dbCtx.Books.ToArrayAsync();
});
Iogger.LogInformation("把数据返回给调用者");
return items;
}
代码如下(未启用缓存的)
运行后结果如下