TelegramBotFramework/TelegramBotBase/Factories/ServiceProviderStartFormFactory.cs
2022-10-08 19:26:34 +03:00

36 lines
1.1 KiB
C#

using System;
using Microsoft.Extensions.DependencyInjection;
using TelegramBotBase.Form;
using TelegramBotBase.Interfaces;
namespace TelegramBotBase.Factories;
public class ServiceProviderStartFormFactory : IStartFormFactory
{
private readonly IServiceProvider _serviceProvider;
private readonly Type _startFormClass;
public ServiceProviderStartFormFactory(Type startFormClass, IServiceProvider serviceProvider)
{
if (!typeof(FormBase).IsAssignableFrom(startFormClass))
{
throw new ArgumentException("startFormClass argument must be a FormBase type");
}
_startFormClass = startFormClass;
_serviceProvider = serviceProvider;
}
public FormBase CreateForm()
{
return (FormBase)ActivatorUtilities.CreateInstance(_serviceProvider, _startFormClass);
}
}
public class ServiceProviderStartFormFactory<T> : ServiceProviderStartFormFactory
where T : FormBase
{
public ServiceProviderStartFormFactory(IServiceProvider serviceProvider) : base(typeof(T), serviceProvider)
{
}
}