diff --git a/TelegramBotBase/BotBase.cs b/TelegramBotBase/BotBase.cs index a481d6d..8332aa2 100644 --- a/TelegramBotBase/BotBase.cs +++ b/TelegramBotBase/BotBase.cs @@ -8,6 +8,7 @@ using Telegram.Bot.Types; using TelegramBotBase.Args; using TelegramBotBase.Base; using TelegramBotBase.Enums; +using TelegramBotBase.Exceptions; using TelegramBotBase.Interfaces; using TelegramBotBase.Sessions; using Console = TelegramBotBase.Tools.Console; @@ -139,6 +140,13 @@ public sealed class BotBase mr.IsFirstHandler = false; } while (ds.FormSwitched && i < GetSetting(ESettings.NavigationMaximum, 10)); } + catch (InvalidServiceProviderConfiguration ex) + { + var ds = Sessions.GetSession(e.DeviceId); + OnException(new SystemExceptionEventArgs(e.Message.Text, e.DeviceId, ds, ex)); + + throw; + } catch (Exception ex) { var ds = Sessions.GetSession(e.DeviceId); diff --git a/TelegramBotBase/Exceptions/InvalidServiceProviderConfiguration.cs b/TelegramBotBase/Exceptions/InvalidServiceProviderConfiguration.cs new file mode 100644 index 0000000..03135ad --- /dev/null +++ b/TelegramBotBase/Exceptions/InvalidServiceProviderConfiguration.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace TelegramBotBase.Exceptions +{ + public sealed class InvalidServiceProviderConfiguration : Exception + { + public InvalidServiceProviderConfiguration(string message, Exception innerException) : base(message, innerException) { } + + } +} diff --git a/TelegramBotBase/Factories/ServiceProviderStartFormFactory.cs b/TelegramBotBase/Factories/ServiceProviderStartFormFactory.cs index 8bac651..f143604 100644 --- a/TelegramBotBase/Factories/ServiceProviderStartFormFactory.cs +++ b/TelegramBotBase/Factories/ServiceProviderStartFormFactory.cs @@ -1,6 +1,7 @@ using System; using Microsoft.Extensions.DependencyInjection; using TelegramBotBase.DependencyInjection; +using TelegramBotBase.Exceptions; using TelegramBotBase.Form; using TelegramBotBase.Interfaces; @@ -24,7 +25,16 @@ public class ServiceProviderStartFormFactory : IStartFormFactory public FormBase CreateForm() { - var fb = (FormBase)ActivatorUtilities.CreateInstance(_serviceProvider, _startFormClass); + FormBase fb = null; + + try + { + fb = (FormBase)ActivatorUtilities.CreateInstance(_serviceProvider, _startFormClass); + } + catch(InvalidOperationException ex) + { + throw new InvalidServiceProviderConfiguration(ex.Message, ex); + } //Sets an internal field for future ServiceProvider navigation fb.SetServiceProvider(_serviceProvider);