NetCore 控制台应用程序依赖注入

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

新建控制台应用程序并添加appsettings.json文件,并将属性-复制到输出目录,设置为如果较新则复制。

项目中添加Nuget包:Microsoft.Extensions.Hosting,选择最新预发行版

代码如下:

复制代码
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System; 
namespace Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var builder = new HostBuilder().ConfigureAppConfiguration((hostContext, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json");
            }).
            ConfigureServices((hostContext, services) =>
            {
                //类似startUp
                services.AddTransient<ITestD1, TestD1>(); 
            }).UseConsoleLifetime();

            var host = builder.Build();
            using (var serviceScope = host.Services.CreateScope())
            {
                var services = serviceScope.ServiceProvider;
                var myConfig = services.GetRequiredService<IConfiguration>();
                Console.WriteLine(myConfig.GetSection("mykey"));
                //其他类中获取
                var myService = services.GetRequiredService<ITestD1>();
                Console.WriteLine(myService.GetConfig("mykey"));
                // 
            }
        }
    }
     

    public interface ITestD1
    {
        string GetConfig(string key);
    }

    public class TestD1 : ITestD1
    {
        /// <summary>
        /// 配置信息
        /// </summary>
        private readonly IConfiguration _configuration;

        /// <summary>
        /// 构造函数的方式进行依赖注入
        /// </summary>
        /// <param name="configuration"></param>
        public TestD1(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        public string GetConfig(string key)
        {
            return _configuration.GetSection(key).Value;
        }
    }
}
复制代码

@天才卧龙的博客

posted @   天才卧龙  阅读(564)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示