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.
40 lines
1.3 KiB
40 lines
1.3 KiB
|
4 months ago
|
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);
|
||
|
|
}
|