Я уже использую новые библиотеки Microsoft.Extensions в .NET Framework 4.7.1, в основном Библиотеки DependencyInjection и Configuration.
Библиотеки 2.x совместимы с .NET Standard 2.0, что означает, что их можно добавлять в приложения, предназначенные для любой среды выполнения, совместимой с .NET Standard 2.0, т. е. .NET Framework 4.7.1 и выше или .NET Core 2.0 и выше. .
В более старых средах выполнения (4.6.1 и более поздних) NuGet может потребоваться добавить некоторые дополнительные пакеты с более новыми версиями некоторых системных сборок, например System.Runtime.
Вы вообще не можете добавить пакеты расширения 2.0 в 4.6. Вы можете добавить старые версии 1.x, которые используются в .NET Core 1.x.
Настройка расширений выполняется одинаково в .NET Core и Full Framework:
Вы создаете ConfigurationBuilder, добавляете поставщиков конфигурации и в конце вызываете Build(), чтобы получить объект IConfigurationRoot
:
IConfigurationRoot configRoot = new ConfigurationBuilder()
.AddUserSecrets<Program>()
.AddJsonFile($"appsettings.json")
.Build();
Создайте ServiceCollection, зарегистрируйте службы и вызовите BuildServiceProvider()
, чтобы получить ServiceProvider
. Вы будете использовать этот ServiceProvider для создания экземпляров классов, требующих внедрения.
ASP.NET Core, который также работает с полной платформой, предоставляет дополнительные вспомогательные библиотеки, которые скрывают шаблонный код.
IServiceCollection services = new ServiceCollection();
ServiceProvider provider= services.AddSingleton<MyService>()
.AddTransient<AnotherService>()
.AddTransient<ServiceThatNeedsTheOthers>()
.BuildServiceProvider();
Предполагая, что третья служба:
public class ServiceThatNeedsTheOthers
{
public ServiceThatNeedsTheOthers(MyService s1,AnotherService s2){..}
}
Вы можете создать его с помощью:
var service3=provider.GetRequiredService<ServiceThatNeedsTheOthers>();
Все это описано в колонке Марка Михаэлиса Essential .NET в журнале MSDN Magazine, например, Dependency Injection с .NET Core и Конфигурация в .NET Core. В статьях показано, как настроить и использовать расширения в консольных приложениях, где вам нужно написать весь шаблон.
PS ASP.NET Core 2.0 также может быть ориентирован на полную платформу. Для нового веб-приложения может иметь смысл создать проект ASP.NET Core 2.0, ориентированный на 4.7.1.
person
Panagiotis Kanavos
schedule
30.03.2018