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 @ 2022-06-20 17:57  天才卧龙  阅读(571)  评论(0)    收藏  举报