feat: add DI form factory

This commit is contained in:
ZavaruKitsu
2022-08-19 15:54:36 +03:00
parent df7880fcf3
commit b2d4c4c3f8
10 changed files with 171 additions and 1 deletions
+15 -1
View File
@@ -7,6 +7,7 @@ using Telegram.Bot.Types;
using TelegramBotBase.Base;
using TelegramBotBase.Builder.Interfaces;
using TelegramBotBase.Commands;
using TelegramBotBase.Factories;
using TelegramBotBase.Form;
using TelegramBotBase.Interfaces;
using TelegramBotBase.Localizations;
@@ -148,7 +149,7 @@ namespace TelegramBotBase.Builder
#endregion
#region "Step 3 (Start Form/Factory)"
#region "Step 3 (Start Form/Factory)"
public INetworkingSelectionStage WithStartForm(Type startFormClass)
{
@@ -163,6 +164,19 @@ namespace TelegramBotBase.Builder
return this;
}
public INetworkingSelectionStage WithServiceProvider(Type startFormClass, IServiceProvider serviceProvider)
{
this._factory = new ServiceProviderStartFormFactory(startFormClass, serviceProvider);
return this;
}
public INetworkingSelectionStage WithServiceProvider<T>(IServiceProvider serviceProvider)
where T : FormBase
{
this._factory = new ServiceProviderStartFormFactory<T>(serviceProvider);
return this;
}
public INetworkingSelectionStage WithStartFormFactory(IStartFormFactory factory)
{
this._factory = factory;
@@ -23,6 +23,22 @@ namespace TelegramBotBase.Builder.Interfaces
/// <returns></returns>
INetworkingSelectionStage WithStartForm<T>() where T : FormBase, new();
/// <summary>
/// Chooses a StartFormFactory which will be use for new sessions.
/// </summary>
/// <param name="startFormClass"></param>
/// <param name="serviceProvider"></param>
/// <returns></returns>
INetworkingSelectionStage WithServiceProvider(Type startFormClass, IServiceProvider serviceProvider);
/// <summary>
/// Chooses a StartFormFactory which will be use for new sessions.
/// </summary>
/// <param name="serviceProvider"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
INetworkingSelectionStage WithServiceProvider<T>(IServiceProvider serviceProvider) where T : FormBase;
/// <summary>
/// Chooses a StartFormFactory which will be use for new sessions.
/// </summary>