我有个课
public TimeSeriesBusinessComponent(IContextRepository contextRepository) { ...我通过类ServiceExtension传递依赖项注入,这是我从Startup.cs调用的。
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddRepositories(Configurations);
services.AddBusinessComponents();ServiceExtension:
public static void AddRepositories(this IServiceCollection serviceCollection, Configurations con)
{
serviceCollection.AddScoped<IContextRepository>(serviceProvider =>
{
string createContextFunctionName = con.Get(CREATE_CONTEXT_FUNCTION_NAME);
return new ContextRepository(createContextFunctionName);
});
}
public static void AddBusinessComponents(this IServiceCollection serviceCollection)
{
serviceCollection.AddScoped<ITimeSeriesBusinessComponent, TimeSeriesBusinessComponent>();
}后来,我像这样使用我的类TimeSeriesBusinessComponent:
public class TimeSeriesController : Controller
{
private ITimeSeriesBusinessComponent BusinessComponent { get; }
public TimeSeriesController(
ITimeSeriesBusinessComponent businessComponent
)
{
BusinessComponent = businessComponent;
}但是现在我需要把一个论点从我的ServicExtension转到我的TimeSeriesBusinessComponent上,就像..
public TimeSeriesBusinessComponent(IContextRepository contextRepository,. string value) { ...从配置(EnvirenmentVariables)中获得的字符串值。
如何同时使用依赖注入和普通参数?
发布于 2019-07-29 08:19:39
因此,由于字符串值来自环境变量,所以应该使用IOptions。
MyOptions类(它将保存您需要的值)Startup.cs中的环境(或任何地方)加载一个值。例如:
services.Configure<MyOptions>(options =>
{
options.MyString = Environment.GetEnvironmentVariable("MY_STRING_KEY");
});然后你用它就像:
public TimeSeriesBusinessComponent(IContextRepository contextRepository, IOptions<MyOptions> myOptions) {
_myOptionsOptions = options.MyString;}
博士:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.2
https://stackoverflow.com/questions/57248894
复制相似问题