【发布时间】:2018-04-04 10:25:52
【问题描述】:
我正在创建一个需要一些配置参数和记录器的服务。这是我的服务的构造函数:
public StorageProvider(string directory, ILogger<StorageProvider> logger)
我刚刚添加了记录器。我曾经在我的 startup.cs 中这样初始化它:
services.AddSingleton<IStorageProvider>(
new StorageProvider(Configuration["TempStorage.Path"]));
directory 参数来自配置文件,并且记录器被 DI'ed。如何设置我的IStorageProvider?
【问题讨论】:
-
您是如何注册
ILogger的?这也是单例吗?如果是这样,将相同的实例传递给ILogger注册到StorageProvider构造。 -
执行此操作时会包含记录器:WebHost.CreateDefaultBuilder(args)(请参阅docs.microsoft.com/en-us/aspnet/core/fundamentals/…)
-
你可以使用
IOptions<StorageProviderOptions>注入目录路径。 -
我不确定我是否完全理解你,但要明确一点:
ILogger<StorageProvider>不需要StorageProvider的实际实例,如果你这么想的话。 type 参数用于区分日志条目,它实际上并没有做任何事情。
标签: c# dependency-injection asp.net-core