Skip to content

Dependency Injection у Console App

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Завантаження...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


У цій статті розглянемо, як використовувати ін’єкцію залежностей (DI) в .NET. За допомогою Microsoft Extensions управління DI здійснюється шляхом додавання служб і їхнього конфігурування в колекції IServiceCollection. Інтерфейс IHost розкриває екземпляр IServiceProvider, який виступає в якості контейнера всіх зареєстрованих служб.

Створимо проєкт за типом Console Application і дамо його ім’я: DependencyInjection.

У проєкт відразу ж завантажимо бібліотеку Microsoft.Extensions.Hosting, використовуючи Package Manager Console:

А також бібліотеку для роботи з базою даних:

У корінь проєкту додамо папку Models, а в неї клас User.cs, з таким вмістом:

У корінь проєкту додамо папку Data, а в неї клас ApplicationContext.cs, з таким вмістом:

У корені проєкту визначимо файл appsettings.json і пропишемо конфігурацію підключення до бази даних:

Рядки підключення визначаються у файлі appsettings.json, у коді вище наведено визначення рядка підключення для БД додатка GameStore. У проєкті застосовується версія LocalDB продукту SQL Server, яка спроєктована спеціально для розробників і не потребує конфігурації або облікових даних.

Після додавання файлу у Visual Studio для його копіювання в каталог застосунку у вікні властивостей необхідно встановити для опції Copy to Output Directory значення “Copy if newer” (або “Copy always”).

У корені проєкту додамо папку Interfaces, у якій визначимо інтерфейс IUser.cs, з таким вмістом:

У корені проєкту додамо папку Repository, у якій визначимо інтерфейс UserRepository.cs, з таким вмістом:

Щоб під час запуску додатків у базі даних були початкові дані, визначимо в Data клас DbInit.cs з таким вмістом:

Змінимо вміст класу Program.cs, таким чином:

На початку методу Main, створюється об’єкт HostApplicationBuilder з використанням статичного методу Host.CreateApplicationBuilder, і передаються аргументи командного рядка (args).

Шановні ентузіасти програмування на C#!

Ми розуміємо, що іноді ви можете зіткнутися з труднощами під час вирішення проблем під час роботи над своїми проектами на C#. Якщо у вас виникли проблеми, пов’язані з мовою програмування C#, ми готові вам допомогти!
https://dijix.com.ua/blog помощь
Ви можете зв’язатися з нами електронною поштою або зателефонувати нам по телефону. Наша команда досвідчених розробників C# буде рада допомогти вам із будь-якими питаннями чи проблемами, які у вас можуть виникнути. Ми прагнемо допомогти вам подолати будь-які перешкоди, з якими ви зіткнетеся на шляху освоєння C#.
Не соромтеся звертатися до нас за будь-якою допомогою або керівництвом. Ми завжди готові підтримати вас у ваших починаннях.

З найкращими побажаннями,
[Леонід/ Dijix Company]

info@dijix.com.ua
+380970601478

Далі створюється об’єкт _confString типу IConfigurationRoot за допомогою ConfigurationBuilder. Він завантажує конфігурацію з файлу appsettings.json, який знаходиться в тому ж каталозі, що і виконуваний файл програми.

Після, додається сервіс для роботи з базою даних. Використовується DbContext типу ApplicationContext, який налаштований на використання SQL Server відповідно до конфігурації, отриманої з appsettings.json.

Далі, додається сервіс з областю дії Scoped, який представлений інтерфейсом IUser і його реалізацією UserRepository. Це означає, що для кожної області дії буде створено новий екземпляр UserRepository.

Далі створюється область дії (IServiceScope) з використанням host.Services.CreateScope(). Область дії надає контейнер залежностей, який містить зареєстровані сервіси. Отримується екземпляр ApplicationContext із контейнера залежностей. Викликається метод InitializeAsync на об’єкті DbInit, передаючи applicationContext. Цей метод виконує ініціалізацію бази даних або виконання інших операцій для підготовки програми до роботи.

Якщо виникає виняток під час ініціалізації бази даних, виводиться повідомлення про помилку в консоль.

Виконується метод UsersExample, який приймає як аргумент host.Services, усередині якого отримує залежність IUser і отримує всіх користувачів із бази даних.

Запустимо додаток і перевіримо, чи вдалося отримати користувачів.

І на останок, уявімо, що наш застосунок має стартову точку, саме з якої ми починаємо працювати з нашим застосунком, щось на кшталт контролера за замовчуванням. У корінь проєкту додамо клас MainController.cs, з таким вмістом:

Змінимо клас Program.cs таким чином:

Запустимо додаток і перевіримо його роботу. У даному випадку, клас MainController, отримує 2 залежності і в циклі отримує користувачів через кожну з них, просто для демонстрації роботи.

Я сподіваюся, що вам сподобалося читати цю статтю, і вона виявилася легкою для розуміння. Будь ласка, дайте мені знати, якщо у вас є якісь коментарі або виправлення.

Так само вам може бути цікава попередня стаття – Sweetalert2 у Asp.Net Core Mvc.

Ви хочете навчитися писати код мовою програмування C#?

Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.

Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:

  • Доступ до пройденого матеріалу
  • Тематичні статті
  • Бібліотека книг
  • Онлайн тестування
  • Спілкування в закритих групах

https://dijix.com.ua

Живи у своєму світі, програмуй у нашому.

Published inЯк зробити на C#?
Subscribe
Notify of
guest
0 комментариев
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x