.net5控制台程序使用IOC容器

8 篇文章 0 订阅

创建控制台应用

   class Program
    {
        static void Main(string[] args)
        {
            Host.CreateDefaultBuilder().ConfigureServices((builder, services) =>
            {
                var config = builder.Configuration;

                services.Configure<MyOptions>(options => config.Bind(options));

                services.AddSingleton<MyDemo>();

                services.AddHostedService<Worker>();  //参考下方的两个Worker例子
            })
            .ConfigureHostConfiguration(buider =>
             {
                 buider.AddJsonFile("./appsettings.json");//如果你的worker类继承自BackgroundService则不需要该操作
             })
            .Build()
            .Run();
        }
    }

worker类继承自IHostedService

  • 最原始的接口,自己将作为builder (例如:手动设置appsettings.json)

    public class Worker1 : IHostedService //这是最原始的接口
    {
        private readonly ILogger _logger;
        private readonly IHostApplicationLifetime _lifetime;

        public Worker1(ILogger<Worker1> logger,
            IHostApplicationLifetime lifetime)
        {
            _logger = logger;
            _lifetime = lifetime;
        }

        public Task StartAsync(CancellationToken cancellationToken)
        {
            _logger.LogInformation("PHP是世界上最好的语言");
            _lifetime.StopApplication();
            return Task.CompletedTask;
        }

        public Task StopAsync(CancellationToken cancellationToken)
        {
            return Task.CompletedTask;
        }
    }

worker类继承自BackgroundService

  public class Worker2 : BackgroundService //这是实现部分功能的抽象类
    {
        private readonly ILogger _logger;
        private readonly IHostApplicationLifetime _lifetime;

        public Worker2(ILogger<Worker2> logger,
            IHostApplicationLifetime lifetime)
        {
            _logger = logger;
            _lifetime = lifetime;
        }

        protected override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _logger.LogInformation("PHP是世界上最好的语言");
            _lifetime.StopApplication();
            return Task.CompletedTask;
        }



作者:PHP是世界上最好的语言
链接:https://www.jianshu.com/p/07e1a0ed838b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值