Переделал всё на DI
This commit is contained in:
+20
-3
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user