基础模块包


新建一个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>();


Web模块包


新建一个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 应用模块服务,等级越小、排序越小的越先执行