You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.3 KiB

using Microsoft.Extensions.DependencyInjection;
namespace CoreAgent.Domain.Interfaces.Common;
/// <summary>
/// 服务作用域管理器接口
/// 用于在单例服务中创建瞬时服务
/// </summary>
public interface IServiceScopeManager
{
/// <summary>
/// 在作用域中执行操作
/// </summary>
/// <typeparam name="T">返回类型</typeparam>
/// <param name="operation">要执行的操作</param>
/// <returns>操作结果</returns>
Task<T> ExecuteInScopeAsync<T>(Func<IServiceProvider, Task<T>> operation);
/// <summary>
/// 在作用域中执行操作(无返回值)
/// </summary>
/// <param name="operation">要执行的操作</param>
/// <returns>任务</returns>
Task ExecuteInScopeAsync(Func<IServiceProvider, Task> operation);
/// <summary>
/// 在作用域中执行操作(同步)
/// </summary>
/// <typeparam name="T">返回类型</typeparam>
/// <param name="operation">要执行的操作</param>
/// <returns>操作结果</returns>
T ExecuteInScope<T>(Func<IServiceProvider, T> operation);
/// <summary>
/// 在作用域中执行操作(同步,无返回值)
/// </summary>
/// <param name="operation">要执行的操作</param>
void ExecuteInScope(Action<IServiceProvider> operation);
}