Command + async
От: nikda  
Дата: 03.06.17 16:53
Оценка:
Пусть есть классы для выполнения комманд (для работы с БД синхронными функциями), + есть декораторы для коман, что бы их можно было вкладывать друг в другна, выпуолнять установочные действия и т.п.
Если команда получает данные из БД, то они предварительно сохраняются во внутреннем сосотянии команды.
Как добавить поддержку ассинхронности, что бы использовать ассинхронные функции для работы с БД внутри комманд?
public class IMyCommand
{
    public void Execute();
}

public class MyCommand : IMyCommand
{
    public void Execute()
    {
        //...
    }
}

public class MyCommand2 : MyCommand
{
    public void Execute()
    {
        //...
    }
    
    public MyCommand2(param1, param2, ...)
    {
        
    }
    
    public List<...> Result {get; private set;}
    
}

public class MyCommand3 : MyCommand
{
    public void Execute()
    {
        //...
    }
    
    public MyCommand2(param1, param2, ...)
    {
        
    }
    
    public SomeType Result {get; private set;}
    
}


Хочется:


public async void (или Task<SomeType>) f()
{
 MyCommand  cmd = CreateComplexCommand();
 
 await cmd.ExecuteAsync();
 
 SomeType result = cmd.result;
 }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.