GFramework/GFramework.Core/Query/AbstractAsyncQuery.cs
GeWuYou 33c435bad5 refactor(core): 收拢泛型家族文件以清理MA0048
- 重构 Command 与 Query 抽象基类文件布局,合并同名泛型家族到基名文件
- 迁移泛型 Event 类型到 Event.cs,保持公共 API 与行为不变
- 更新 analyzer warning reduction 的 RP-009 跟踪与验证结果
2026-04-21 12:31:24 +08:00

56 lines
1.9 KiB
C#

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