首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同时使用依赖注入和参数?

如何同时使用依赖注入和参数?
EN

Stack Overflow用户
提问于 2019-07-29 07:20:52
回答 1查看 109关注 0票数 1

我有个课

代码语言:javascript
复制
public TimeSeriesBusinessComponent(IContextRepository contextRepository)  { ...

我通过类ServiceExtension传递依赖项注入,这是我从Startup.cs调用的。

Startup.cs:

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
   services.AddRepositories(Configurations);
   services.AddBusinessComponents();

ServiceExtension:

代码语言:javascript
复制
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:

代码语言:javascript
复制
public class TimeSeriesController : Controller
{
    private ITimeSeriesBusinessComponent BusinessComponent { get; }

    public TimeSeriesController(
        ITimeSeriesBusinessComponent businessComponent
        )
    {
        BusinessComponent = businessComponent;
    }

但是现在我需要把一个论点从我的ServicExtension转到我的TimeSeriesBusinessComponent上,就像..

代码语言:javascript
复制
public TimeSeriesBusinessComponent(IContextRepository contextRepository,. string value)  { ...

从配置(EnvirenmentVariables)中获得的字符串值。

如何同时使用依赖注入和普通参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-29 08:19:39

因此,由于字符串值来自环境变量,所以应该使用IOptions

  1. 创建您的MyOptions类(它将保存您需要的值)
  2. Startup.cs中的环境(或任何地方)加载一个值。
  3. 将选项注册到DI容器。
  4. 将其注入目标类,就像任何其他服务一样。

例如:

代码语言:javascript
复制
services.Configure<MyOptions>(options =>
  {
    options.MyString = Environment.GetEnvironmentVariable("MY_STRING_KEY");
  });

然后你用它就像:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57248894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档