- 状态:已废弃(被 ADR-0005 取代)
- 日期:2026-06
背景
多厂商场景需要一种机制让消费方选择具体的 Provider。
原始决策
不使用 Factory 模式,改用 TryAddSingleton<TCapability, TProvider> 注册——首个注册的 Provider 胜出。
废弃原因
- 直接注入共享接口时只有首个 Provider 可见。
IEnumerable<T>不能恢复被TryAdd丢弃的实现。- 运行时按租户、地区或业务线选择 Provider 没有统一入口。
- Singleton Provider 会捕获 typed/factory HttpClient,形成错误生命周期。
- 包存在、接口实现和真实可用能力之间没有可查询的事实源。
替代方案
ADR-0005 引入 IntegrationProviderDescriptor + IIntegrationProviderCatalog + IIntegrationProviderResolver<T>,解决了上述全部问题。