В настоящее время я переношу проект ASP.NET Web Api в ASP.NET Core, и я немного потерял информацию о том, как правильно выполнить сохранение значения свойства Configuration и сделать конфигурацию доступной для всего моего проекта.Инъекция зависимостей ядра ASP.NET: разница между фабрикой и экземпляром?
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
// invoking a factory to create the service?
services.AddSingleton(_ => Configuration);
services.AddSingleton<IConfiguration>(_ => Configuration);
// passing the instance of the service?
services.AddSingleton(Configuration);
services.AddSingleton<IConfigurationRoot>(Configuration);
}
Я до сих пор не компилируется все еще, как я до сих пор немного больше идти в миграции остальную часть кода, так что я даже не уверен, если дно два еще в силе.
Я еще не нашел четкой документации по этим различным реализациям, в частности нижним двум, может кто-то помочь объяснить различия?
Hi Factory используется в том случае, если вы не хотите создавать экземпляр нескольких раз, и этот объект зависит от многих других других сервисов. Но в вашем случае это один класс, и вы не собираетесь издеваться над конфигурацией для тестирования, поэтому нет смысла использовать его как фабрику. Вы должны пойти за DI. –
, пожалуйста, прочитайте больше здесь: - http://dotnetliberty.com/index.php/2016/05/09/asp-net-core-factory-pattern-dependency-injection/ –
@YashveerSingh, Спасибо за ссылку. Тем не менее, я до сих пор неясно о разнице между использованием «Func» лямбды против передачи экземпляра. – Svek