* Fixed method handlers behaviour
This commit is contained in:
@@ -70,6 +70,7 @@ namespace Telegrator.Hosting.Web
|
|||||||
Services.Configure<TelegramBotClientOptions>(Configuration.GetSection(nameof(TelegramBotClientOptions)), new TelegramBotClientOptionsProxy());
|
Services.Configure<TelegramBotClientOptions>(Configuration.GetSection(nameof(TelegramBotClientOptions)), new TelegramBotClientOptionsProxy());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Services.AddSingleton<IConfigurationManager>(Configuration);
|
||||||
Services.AddSingleton<IOptions<TelegratorOptions>>(Options.Create(_settings));
|
Services.AddSingleton<IOptions<TelegratorOptions>>(Options.Create(_settings));
|
||||||
return new TelegramBotWebHost(_innerBuilder, _handlers);
|
return new TelegramBotWebHost(_innerBuilder, _handlers);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ namespace Telegrator.Hosting
|
|||||||
{
|
{
|
||||||
_innerBuilder = hostApplicationBuilder;
|
_innerBuilder = hostApplicationBuilder;
|
||||||
_settings = settings ?? new TelegramBotHostBuilderSettings();
|
_settings = settings ?? new TelegramBotHostBuilderSettings();
|
||||||
|
|
||||||
_handlers = new HostHandlersCollection(Services, _settings);
|
_handlers = new HostHandlersCollection(Services, _settings);
|
||||||
|
|
||||||
_innerBuilder.Logging.ClearProviders();
|
_innerBuilder.Logging.ClearProviders();
|
||||||
@@ -78,6 +77,7 @@ namespace Telegrator.Hosting
|
|||||||
}
|
}
|
||||||
|
|
||||||
Services.AddSingleton<IOptions<TelegratorOptions>>(Options.Create(_settings));
|
Services.AddSingleton<IOptions<TelegratorOptions>>(Options.Create(_settings));
|
||||||
|
Services.AddSingleton<IConfigurationManager>(Configuration);
|
||||||
return new TelegramBotHost(_innerBuilder, _handlers);
|
return new TelegramBotHost(_innerBuilder, _handlers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Telegrator.Analyzers", "Tel
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Telegrator.Hosting.Web", "Telegrator.Hosting.Web\Telegrator.Hosting.Web.csproj", "{98AB490F-6A36-CCFF-F6E6-B029D1665965}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Telegrator.Hosting.Web", "Telegrator.Hosting.Web\Telegrator.Hosting.Web.csproj", "{98AB490F-6A36-CCFF-F6E6-B029D1665965}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SosalBot", "..\SosalBot\SosalBot\SosalBot.csproj", "{D6AA4D47-0DCE-520E-5779-A14EA9CB1DEC}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
AnalyzersDebug|Any CPU = AnalyzersDebug|Any CPU
|
AnalyzersDebug|Any CPU = AnalyzersDebug|Any CPU
|
||||||
@@ -63,6 +65,12 @@ Global
|
|||||||
{98AB490F-6A36-CCFF-F6E6-B029D1665965}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{98AB490F-6A36-CCFF-F6E6-B029D1665965}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{98AB490F-6A36-CCFF-F6E6-B029D1665965}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{98AB490F-6A36-CCFF-F6E6-B029D1665965}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{98AB490F-6A36-CCFF-F6E6-B029D1665965}.Release|Any CPU.Build.0 = Release|Any CPU
|
{98AB490F-6A36-CCFF-F6E6-B029D1665965}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{D6AA4D47-0DCE-520E-5779-A14EA9CB1DEC}.AnalyzersDebug|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{D6AA4D47-0DCE-520E-5779-A14EA9CB1DEC}.AnalyzersDebug|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{D6AA4D47-0DCE-520E-5779-A14EA9CB1DEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{D6AA4D47-0DCE-520E-5779-A14EA9CB1DEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{D6AA4D47-0DCE-520E-5779-A14EA9CB1DEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{D6AA4D47-0DCE-520E-5779-A14EA9CB1DEC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ namespace Telegrator.MadiatorCore.Descriptors
|
|||||||
/// <typeparam name="TUpdate"></typeparam>
|
/// <typeparam name="TUpdate"></typeparam>
|
||||||
public class MethodHandlerDescriptor<TUpdate> : HandlerDescriptor where TUpdate : class
|
public class MethodHandlerDescriptor<TUpdate> : HandlerDescriptor where TUpdate : class
|
||||||
{
|
{
|
||||||
|
private readonly MethodInfo Method;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes new instance of <see cref="MethodHandlerDescriptor{TUpdate}"/>
|
/// Initializes new instance of <see cref="MethodHandlerDescriptor{TUpdate}"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -28,13 +30,21 @@ namespace Telegrator.MadiatorCore.Descriptors
|
|||||||
UpdateType = handlerAttribute.Type;
|
UpdateType = handlerAttribute.Type;
|
||||||
Indexer = handlerAttribute.GetIndexer();
|
Indexer = handlerAttribute.GetIndexer();
|
||||||
Filters = new DescriptorFiltersSet(handlerAttribute, stateKeeperAttribute, filters);
|
Filters = new DescriptorFiltersSet(handlerAttribute, stateKeeperAttribute, filters);
|
||||||
DisplayString = HandlerInspector.GetDisplayName(action.Method);
|
DisplayString = HandlerInspector.GetDisplayName(action.Method) ?? action.Method.Name;
|
||||||
InstanceFactory = () => new MethodHandler(action.Method, UpdateType);
|
Method = action.Method;
|
||||||
|
InstanceFactory = () => new MethodHandler(UpdateType);
|
||||||
|
LazyInitialization = handler =>
|
||||||
|
{
|
||||||
|
if (handler is not MethodHandler methodHandler)
|
||||||
|
throw new InvalidDataException();
|
||||||
|
|
||||||
|
methodHandler.Method = Method;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MethodHandler(MethodInfo method, UpdateType updateType) : AbstractUpdateHandler<TUpdate>(updateType)
|
private class MethodHandler(UpdateType updateType) : AbstractUpdateHandler<TUpdate>(updateType)
|
||||||
{
|
{
|
||||||
private readonly MethodInfo Method = method;
|
internal MethodInfo Method = null!;
|
||||||
|
|
||||||
public override async Task<Result> Execute(IAbstractHandlerContainer<TUpdate> container, CancellationToken cancellation)
|
public override async Task<Result> Execute(IAbstractHandlerContainer<TUpdate> container, CancellationToken cancellation)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user