我正在尝试将一个.NET Framework类库与一个使用内置DI机制的ASP.NET Core 2.1应用程序对齐。现在,我创建了一个配置类,并向appsettings.json添加了适当的部分:
services.Configure<MyConfig>(Configuration.GetSection("MyConfiguration"));
services.AddScoped<MyService>();
在类库中:
public class MyService
{
private readonly MyConfig _config;
public MyService(IOptions<MyConfig> config)
{
_config = config.Value;
}
}
然而,为了构建这个类库,我必须添加Microsoft.Extensions.Options
NuGet包。问题是该包携带了大量的依赖项,这些依赖项似乎过于冗余,仅仅为了一个接口而添加这么多依赖项有些不值得。
MyConfig
注入到您的服务中,而不是IOptions<MyConfig>
,并在ConfigureServices中进行额外的注册:services.AddScope<MyConfig>(provider => provider.GetRequiredService<IOptions<MyConfig>>().Value);
。但是,.NET Core和.NET Standard现在已经非常成熟,平台无关,并且可以在许多企业场景中使用(除非您需要基于WCF或System.Web的内容)。 - TsengIOptions<T>
,而且我认为你不应该依赖于IOptions<T>
。这是一个无用的抽象层。请参见此处我的理由。 - Steven