首页 > 解决方案 > 使用 Net Core 默认 DI 注入字符串和服务

问题描述

我有一个 Net Core 2.1 控制台应用程序,我在其中执行以下操作:

class Program
{
    static void Main(string[] args)
    {
        var configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", false)
            .Build();

        var fullPath = configuration.GetValue<string>("tempPath:fullPath");

        serviceCollection.AddTransient<MyService>();
        serviceCollection.AddTransient<Worker>();
        ...


public class Worker
{
    public string FullPath {get; set;}
    private readonly MyService _myService;

    public Worker(MyService myService,
        string fullpath)
    {
        _myService = myService;
        FullPath=fullpath;
    }

换句话说,我需要以Worker某种方式在我的类中注入服务和配置字符串。

有人可以建议我正确的方法吗?

标签: c#dependency-injection

解决方案


只需将您的 DI 配置更改为以下内容:

var fullPath = configuration.GetValue<string>("tempPath:fullPath");
serviceCollection.AddTransient<MyService>();
serviceCollection.AddTransient<Worker>(x => new Worker(x.GetRequiredService<MyService>(), fullPath));

或者按照建议使用IOptions接口将您的配置对象注入到类中。


推荐阅读