[英]Autofac register type with constructor
我有課:
public class FunctionExtender : IFunctionsExtender
{
private static IOptions<Settings> _settings;
private static ILogger<FunctionExtender> _logger;
public FunctionExtender(IOptions<Settings> settings, ILogger<FunctionExtender> logger)
{
_settings = settings;
_logger = logger;
}
}
其中IOptions
是Microsoft.Extensions.Options
類型,而ILogger
是Microsoft.Extensions.Logging
類型。 如何在帶有參數的Autofac容器中注冊此類型? 我嘗試過這樣的事情:
var container = new ContainerBuilder();
container.Populate(services);
container.RegisterType<FunctionExtender>()
.WithParameter(new TypedParameter(typeof(IOptions<Settings>), ???));
但我不知道第二個論點該如何傳遞。
您只需要將FunctionExtender
注冊為IFunctionsExtender
。 Autofac將為您解決適當的依賴項。 這是控制反轉(IoC)容器的工作之一-注冊,解析,釋放和處置。
從Autofac.Extensions.DependencyInjection Version 4.2.0
,這是ASP.Net Core 2
所需的全部。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMvc();
...
}
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterType<FunctionExtender>().As<IFunctionsExtender>();
}
}
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureServices(services => services.AddAutofac()) <======
.UseStartup<Startup>()
.Build();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.