c# - .NET Core 控制台应用依赖注入(inject)设置

标签 c# .net-core console

如何向 DI 添加更多服务?例如,当我尝试添加另一个服务时,现在只有 ConvertService 是 DI

services.AddTransient<Authorization>();

它没有效果,我无法为其他类提供 DI 授权服务。如果我想添加更多要添加到 DI 的服务,该如何处理。此外,我只能将 IHttpCLient 注入(inject) ConvertService

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.IO;
using System.Threading.Tasks;

namespace ProtocolConvert
{
    class Program
    {
       private static IConfigurationRoot Configuration { get; set; }
        static async Task Main(string[] args)
        {

            IConfigurationBuilder builder = new ConfigurationBuilder()

            .AddJsonFile("appsettings.json")
            .AddEnvironmentVariables();
            Configuration = builder.Build();

            var host = Host.CreateDefaultBuilder()
                .ConfigureServices((context, services) =>
                {
                    services.AddHttpClient("GitHub", httpClient =>
                     {
                         httpClient.BaseAddress = new Uri(Configuration.GetSection("tokenUrl").Value);
                         httpClient.DefaultRequestHeaders.Add(
                              "X-API-ID", Configuration.GetSection("X-API-ID").Value);
                         httpClient.DefaultRequestHeaders.Add(
                             "X-API-SECRET", Configuration.GetSection("X-API-SECRET").Value);
                     });
                   
                    services.AddTransient<ConvertService>();
                 
                }).Build();

            var svc = ActivatorUtilities.CreateInstance<ConvertService>(host.Services);
          
            await svc.ConvertToCsv();
        }
       


    }
}

最佳答案

我不太确定您实现的目的。但我认为你应该使用 GetService<ConvertService>()而不是创建服务类的新实例。

你可以在这里看到一个例子https://siderite.dev/blog/creating-console-app-with-dependency-injection-in-/

希望对你有帮助

关于c# - .NET Core 控制台应用依赖注入(inject)设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71704685/

相关文章:

java - 即使设置了System.setErr(),也无法使用自定义PrintStream打印错误

c# - 检查 STL 文件是否可以包含两个模型

c# - 动态链接库,解决方案无法加载程序集

c# - IEnumerable 的早期执行

c# - 缺少属性时如何强制 System.Text.Json 序列化程序抛出异常?

c++ - 如何知道我们是在控制台还是窗口应用程序中?

javascript - 在控制台使用 jQuery?

c# - 在构造之前发送对象的引用

c# - .Net Framework 和 .Net Core 在同一个解决方案中

c# - 使用 Powershell RunspacePool 多线程从 C# 到远程服务器