using Volo.Abp.DependencyInjection;
namespace BuildFlow.Host.Configuration;
///
/// 注册 ABP 与 ASP.NET Core 管线之间的双向访问桥。
/// ABP 模块的 OnApplicationInitialization 通过 context.GetApplicationBuilder() /
/// context.GetEndpointRouteBuilder() 取回这些 ObjectAccessor,从而在 ABP 模块里装配中间件、
/// 映射 Hub 等。每个 accessor 同时注册「具体类型」与 IObjectAccessor<T> 接口两份,
/// 兼容 ABP 内部按接口解析与宿主按具体类型解析两种获取方式。
///
public static class HostObjectAccessors
{
public static IServiceCollection AddHostObjectAccessors(this IServiceCollection services)
{
services.AddAccessor(new ObjectAccessor());
services.AddAccessor(new ObjectAccessor());
services.AddAccessor(new ObjectAccessor());
services.AddAccessor(new ObjectAccessor());
return services;
}
/// 同时注册 accessor 的具体类型与 接口,单一注册点避免重复。
private static void AddAccessor(this IServiceCollection services, ObjectAccessor accessor)
where T : class
{
services.AddSingleton(accessor);
services.AddSingleton>(accessor);
}
}