Пусть есть классы для выполнения комманд (для работы с БД синхронными функциями), + есть декораторы для коман, что бы их можно было вкладывать друг в другна, выпуолнять установочные действия и т.п.
Если команда получает данные из БД, то они предварительно сохраняются во внутреннем сосотянии команды.
Как добавить поддержку ассинхронности, что бы использовать ассинхронные функции для работы с БД внутри комманд?
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;
}