[core] add IServiceCollection extension for option registration

This commit is contained in:
Andriy
2023-07-21 18:38:34 +03:00
parent 27ddfd39cc
commit 864f6d0f57
+9 -4
View File
@@ -1,15 +1,20 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using Kruzya.TelegramBot.Core.Cache; using Kruzya.TelegramBot.Core.Cache;
using Kruzya.TelegramBot.Core.Options;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
namespace Kruzya.TelegramBot.Core.Extensions namespace Kruzya.TelegramBot.Core.Extensions;
public static class StartupExtension
{ {
public static class StartupExtension
{
public static IServiceCollection AddQueue<T>(this IServiceCollection collection) public static IServiceCollection AddQueue<T>(this IServiceCollection collection)
=> collection.AddSingleton<ConcurrentQueue<T>>(); => collection.AddSingleton<ConcurrentQueue<T>>();
public static IServiceCollection AddMemoryCache<TKey, TValue>(this IServiceCollection collection) public static IServiceCollection AddMemoryCache<TKey, TValue>(this IServiceCollection collection)
=> collection.AddSingleton<MemoryCache<TKey, TValue>>(); => collection.AddSingleton<MemoryCache<TKey, TValue>>();
}
public static IServiceCollection AddOption<T>(this IServiceCollection collection) where T : class, IOption
=> collection.AddScoped<T>()
.AddScoped<IOption, T>(s => s.GetService<T>());
} }