Sex*_*yMF 8 dependency-injection .net-core
您知道如何手动解决.net core 中的依赖项吗?就像是
DependencyResolver.Resolve<ISomeService>()
Run Code Online (Sandbox Code Playgroud)
更新 我在一个没有注入的类中,我想从内部解决它,而不是到处传递变量
添加您的依赖项,ConfigureServices如下所示
public void ConfigureServices(IServiceCollection services){
//AddSingleton or AddTransient based on your requirements
services.AddTransient<ISomeService, ConcreteService>();
}
Run Code Online (Sandbox Code Playgroud)
在您的控制器或任何地方,添加IServiceProvider构造函数,如下所示:
using Microsoft.Extensions.DependencyInjection;
...
public class HomeController
{
...
public HomeController(IServiceProvider serviceProvider)
{
var service = serviceProvider.GetService<ISomeService>();
}
}
Run Code Online (Sandbox Code Playgroud)
@Shazam,以下是根据您的评论提供的一些注释或建议:
如果由于此类中可能没有构造函数而无法注入,我建议向您的函数添加一个参数并从外部传递已解析的依赖项
另一个想法是添加一个静态属性并初始化其值ConfigureServices
例如:
public static class MyClass
{
public static ISomeService MyServiceObj { set; get; }
....
}
Run Code Online (Sandbox Code Playgroud)
在你的ConfigureServices
public void ConfigureServices(IServiceCollection services){
services.AddTransient<ISomeService, ConcreteService>();
MyClass.MyServiceObj = services.GetService<ISomeService>();
}
Run Code Online (Sandbox Code Playgroud)
希望这对您有所帮助,如果您仍然不确定如何操作,请评价我的答案或给我留言
| 归档时间: |
|
| 查看次数: |
8202 次 |
| 最近记录: |