• 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;
            }
        }
    }

    @天才卧龙的博客

  • 相关阅读:
    再说LZ77压缩算法
    关于LZ77压缩算法
    Qt 简易设置透明按钮
    MFC edit 控件 自动将光标置于想要输入内容的位置
    事件和委托
    2016/06/07
    2016/04/28
    2016/4/27
    2016/04/26
    重载和重写(Overload, Override)
  • 原文地址:https://www.cnblogs.com/chenwolong/p/16394198.html
Copyright © 2020-2023  润新知