新建一个c#类文件
修改代码继承自HcfPack,代码如下
/// <summary>
/// 业务模块模块
/// </summary>
[Description("业务核心模块包")]
public class ModulePack : HcfPack
{
/// <summary>
/// 是否启用
/// </summary>
public override bool IsEnabled => true; //是否启用该模块包
/// <summary>
/// 等级,越小越先注入
/// </summary>
public override PackLevel Level => PackLevel.Business;//注入等级,越小的越先注入
/// <summary>
/// 等级相同,越小越先注入
/// </summary>
public override int Sort => 1;//同一等级下,越小的越先注入
/// <summary>
/// 将模块服务添加到依赖注入服务容器中
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public override IServiceCollection ConfigureServices(IServiceCollection services)
{
services.AddScoped<ITestContract, TestService>();//注入接口与实现类
return services;
}
/// <summary>
/// 应用模块服务
/// </summary>
/// <param name="provider">服务提供者</param>
public override void Configure(IServiceProvider provider)
{
//todo
}
}
HcfPack是一个abstract类,所有的模块包必须继承自HcfPack
ConfigureServices将模块服务添加到依赖注入服务容器中
Configure 应用模块服务,等级越小、排序越小的越先执行
services.AddScoped<ITestContract, TestService>();//注入接口与实现类
注入业务逻辑代码,通过接口及实现该接口的类进行注入到服务容器中,然后通过构造函数获取到该实现类。
如果您不适应接口的写法,觉的繁琐,您也可以直接注入一个类
services.AddScoped<TestService>();//注入接口与实现类
依赖注入的实现的生命周期分为三种,分别为应用程序生命周期(也称为单例Singleton)、范围内生命周期(Scoped)、瞬时生命周期(Transient)
Singleton,即整个程序的生命周期只生成一个实例,例如
services.AddSingleton<ITestContract,TestService>();
Scoped,即在一个范围内,每次获取到的都是同一个实例,例如
services.AddScoped<ITestContract, TestService>();
Transient,每次获取到的都是一个新的实例,例如
services.AddTransient<ITestContract,TestService>();
新建一个c#类文件
修改代码继承自HcfWebPack,代码如下
/// <summary>
/// 后台管理模块包
/// </summary>
[Description("后台管理模块")]
public class AdminWebPack : HcfWebPack
{
/// <summary>
/// 是否启用
/// </summary>
public override bool IsEnabled => true;
/// <summary>
/// 等级,越小越先注入
/// </summary>
public override PackLevel Level => PackLevel.Business;
/// <summary>
/// 等级相同,越小越先注入
/// </summary>
public override int Sort => 1;
/// <summary>
/// 将模块服务添加到依赖注入服务容器中
/// </summary>
/// <param name="services">依赖注入服务容器</param>
/// <returns></returns>
public override IServiceCollection ConfigureServices(IServiceCollection services)
{
services.AddScoped<ITestContract, TestService>();//注入接口与实现类
return services;
}
public override void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
}
}
HcfWebPack是一个abstract类,所有的模块包都继承自HcfPack
ConfigureServices将模块服务添加到依赖注入服务容器中
Configure 应用模块服务,等级越小、排序越小的越先执行