using GFramework.Core.Abstractions.Query;
using GFramework.Core.Rule;
using GFramework.Cqrs.Abstractions.Cqrs.Query;
namespace GFramework.Core.Query;
///
/// 异步查询抽象基类,提供异步查询的基本框架和执行机制
/// 继承自ContextAwareBase并实现IAsyncQuery<TResult>接口
///
/// 查询结果的类型
public abstract class AbstractAsyncQuery : ContextAwareBase, IAsyncQuery
{
///
/// 执行异步查询操作
///
/// 返回查询结果的异步任务
public Task DoAsync()
{
return OnDoAsync();
}
///
/// 抽象方法,用于实现具体的异步查询逻辑
///
/// 返回查询结果的异步任务
protected abstract Task OnDoAsync();
}
///
/// 抽象异步查询基类,为需要输入参数的异步查询提供统一执行骨架。
///
/// 查询输入类型,必须实现 接口。
/// 查询结果类型。
/// 查询输入参数。
public abstract class AbstractAsyncQuery(TInput input)
: ContextAwareBase, IAsyncQuery
where TInput : IQueryInput
{
///
/// 执行异步查询操作。
///
/// 返回查询结果的异步任务。
public Task DoAsync()
{
return OnDoAsync(input);
}
///
/// 抽象方法,用于实现具体的异步查询逻辑。
///
/// 查询输入参数。
/// 返回查询结果的异步任务。
protected abstract Task OnDoAsync(TInput input);
}