using System.Collections.Generic; using System.Threading.Tasks; namespace Kruzya.TelegramBot.Core.Options; public abstract class AbstractOption : IOption where TOption: AbstractOption { public abstract string OptionId { get; } public abstract string OptionName { get; } public abstract OptionType OptionType { get; } public abstract TValue DefaultValue { get; } public List ChoiceList { get; } = new(); private readonly IOptionProvider _optionProvider; protected AbstractOption(IOptionProvider optionProvider) { _optionProvider = optionProvider; } public async Task GetValueAsync(long chatId) { return await _optionProvider.GetValueAsync(chatId, OptionId, DefaultValue); } public async Task SetValueAsync(long chatId, TValue value) { await _optionProvider.SetValueAsync(chatId, OptionId, value); } }