如何向 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/