LenovoLegionToolkit

Форк
0
27 строк · 914.0 Байт
1
using System.Threading.Tasks;
2
using LenovoLegionToolkit.Lib.Features;
3

4
namespace LenovoLegionToolkit.Lib.Automation.Steps;
5

6
public abstract class AbstractFeatureAutomationStep<T> : IAutomationStep<T> where T : struct
7
{
8
    private readonly IFeature<T> _feature = IoCContainer.Resolve<IFeature<T>>();
9

10
    public T State { get; }
11

12
    protected AbstractFeatureAutomationStep(T state) => State = state;
13

14
    public Task<bool> IsSupportedAsync() => _feature.IsSupportedAsync();
15

16
    public virtual async Task RunAsync(AutomationEnvironment _)
17
    {
18
        var currentState = await _feature.GetStateAsync().ConfigureAwait(false);
19
        if (!State.Equals(currentState))
20
            await _feature.SetStateAsync(State).ConfigureAwait(false);
21
        MessagingCenter.Publish(State);
22
    }
23

24
    public Task<T[]> GetAllStatesAsync() => _feature.GetAllStatesAsync();
25

26
    public abstract IAutomationStep DeepCopy();
27
}
28

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.