Autofac - 从 .net 核心 2.2 升级到 3.1
Autofac - upgrading from .net core 2.2 to 3.1
我正在关注 Autofac guide 迁移到 .net 3.1
根据他们的指南,我需要添加(除其他外)这个功能:
public void ConfigureContainer(ContainerBuilder builder)
这将被自动调用
问题是其中注册服务的代码对我们的应用程序来说是有条件的,所以我需要向函数传递一个布尔值
例如:
public void ConfigureContainer(ContainerBuilder builder)
{
if (enableTokenAutoRefresh)
{
builder.RegisterType<AuthenticationWrapper>()
.As<IApiProxy>()
}
else
{
builder.RegisterType<ApiProxy>()
.As<IApiProxy>()
}
}
我可以只向 ConfigureContainer 方法添加一个布尔值吗?
似乎这会打破对它的呼唤?
如果没有 - 如何将数据传递给它?
请帮忙
ConfigureContainer
,由 ASP.NET 核心框架提供,仅采用 DI 框架的容器构建器类型(在本例中为 Autofac ContainerBuilder
)。要在其中获取其他数据,您需要在启动管道的较早位置的 Startup
class 上设置一个变量并使用它。
// NOT a complete Startup, but gives you the idea.
public class Startup
{
public Startup(IConfiguration config)
{
// appSettings.json has the value you want
this.EnableTokenAutoRefresh = config.GetValue<bool>("path:to:key");
}
public bool EnableTokenAutoRefresh { get; set; }
public void ConfigureContainer(ContainerBuilder builder)
{
if(this.EnableTokenAutoRefresh)
{
// Do what you need to based on config
}
}
}
我正在关注 Autofac guide 迁移到 .net 3.1
根据他们的指南,我需要添加(除其他外)这个功能:
public void ConfigureContainer(ContainerBuilder builder)
这将被自动调用
问题是其中注册服务的代码对我们的应用程序来说是有条件的,所以我需要向函数传递一个布尔值
例如:
public void ConfigureContainer(ContainerBuilder builder)
{
if (enableTokenAutoRefresh)
{
builder.RegisterType<AuthenticationWrapper>()
.As<IApiProxy>()
}
else
{
builder.RegisterType<ApiProxy>()
.As<IApiProxy>()
}
}
我可以只向 ConfigureContainer 方法添加一个布尔值吗? 似乎这会打破对它的呼唤? 如果没有 - 如何将数据传递给它?
请帮忙
ConfigureContainer
,由 ASP.NET 核心框架提供,仅采用 DI 框架的容器构建器类型(在本例中为 Autofac ContainerBuilder
)。要在其中获取其他数据,您需要在启动管道的较早位置的 Startup
class 上设置一个变量并使用它。
// NOT a complete Startup, but gives you the idea.
public class Startup
{
public Startup(IConfiguration config)
{
// appSettings.json has the value you want
this.EnableTokenAutoRefresh = config.GetValue<bool>("path:to:key");
}
public bool EnableTokenAutoRefresh { get; set; }
public void ConfigureContainer(ContainerBuilder builder)
{
if(this.EnableTokenAutoRefresh)
{
// Do what you need to based on config
}
}
}