gpt4 book ai didi

.net-core - .net 核心在代码中的任何位置手动解析依赖项

转载 作者:行者123 更新时间:2023-12-04 21:04:09 26 4
gpt4 key购买 nike

你知道如何手动解决 中的依赖关系吗? .net 核心 ?
就像是

DependencyResolver.Resolve<ISomeService>()

更新
我在一个没有注入(inject)的类中,我想从内部解决它,而不是到处传递变量

最佳答案

ConfigureServices 中添加您的依赖项如下

public void ConfigureServices(IServiceCollection services){
//AddSingleton or AddTransient based on your requirements
services.AddTransient<ISomeService, ConcreteService>();
}

在您的 Controller 或任何地方,添加 IServiceProvider在如下构造函数中:
using Microsoft.Extensions.DependencyInjection;

...

public class HomeController
{
...
public HomeController(IServiceProvider serviceProvider)
{
var service = serviceProvider.GetService<ISomeService>();
}
}

@Shazam,以下是基于您的评论的一些注释或建议:
  • 如果由于此类中可能没有构造函数而无法注入(inject),我建议在函数中添加一个参数并从外部传递已解析的依赖项
  • 另一个想法是添加一个静态属性并在ConfigureServices中初始化它的值

  • 例如:
    public static class MyClass
    {
    public static ISomeService MyServiceObj { set; get; }
    ....
    }

    在您的 ConfigureServices
       public void ConfigureServices(IServiceCollection services){
    services.AddTransient<ISomeService, ConcreteService>();
    MyClass.MyServiceObj = services.GetService<ISomeService>();
    }

    希望这会有所帮助,如果您仍然不确定如何做,请评价我的回答或给我留言

    关于.net-core - .net 核心在代码中的任何位置手动解析依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50664743/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com