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; } } }
@天才卧龙的博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?