Переделал всё на DI

This commit is contained in:
ftc
2024-01-20 18:37:52 +03:00
parent 2a8348df44
commit d641de9689
5 changed files with 66 additions and 35 deletions
+20 -3
View File
@@ -5,6 +5,7 @@ using System.IO;
using System.Reflection;
using System.Text.Json;
using System.Threading;
using Telegram.Bot;
using ZaoBot.Config;
using ZaoBot.OpenHab;
@@ -23,9 +24,16 @@ namespace ZaoBot
config = LoadConfig();
services = new ServiceCollection();
services.AddSingleton<IConfig, Config.Config>(CreateConfig);
services.AddSingleton<BotService, BotService>();
services.AddSingleton<OpenHabClient, OpenHabClient>();
services.AddSingleton<NotificationReceiver, NotificationReceiver>();
services.AddScoped<BotService, BotService>();
services.AddScoped<IServiceProvider, IServiceProvider>(p => p);
services.AddScoped<ITelegramBotClient, TelegramBotClient>(CreateTelegramBot);
services.AddTransient<MainMenuUserState, MainMenuUserState>();
services.AddTransient<StatusMenuUserState, StatusMenuUserState>();
services.AddTransient<CamerasMenuUserState, CamerasMenuUserState>();
using (var provider = services.BuildServiceProvider())
{
var receiver = provider.GetRequiredService<NotificationReceiver>();
@@ -35,8 +43,11 @@ namespace ZaoBot
{
try
{
bot = provider.GetRequiredService<BotService>();
bot.Run();
using (var scope = provider.CreateScope())
{
bot = scope.ServiceProvider.GetRequiredService<BotService>();
bot.Run();
}
}
catch (Exception e)
{
@@ -49,6 +60,12 @@ namespace ZaoBot
}
}
private static TelegramBotClient CreateTelegramBot(IServiceProvider arg)
{
var token = config.RootElement.GetProperty("token").GetString();
return new TelegramBotClient(token);
}
private static Config.Config CreateConfig(IServiceProvider arg)
{
return new Config.Config(config);