You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DryIoc如何实现无需显式解析的动态服务映射注册

DryIoc 动态接口实现注册方案

DryIoc 原生支持该需求,无需手动调用IResolver绕过容器原生生命周期管理,使用Register方法的实现类型工厂重载即可实现你期望的注册逻辑。

具体实现

你的前置服务注册保持不变即可:

container.Register<ISettings>();
container.Register<Connection1>();
container.Register<Connection2>();

动态选择实现类型的注册代码如下:

container.Register<IConnection>(
    implementationTypeFactory: request => 
        request.Container.Resolve<ISettings>().UseConnection1 
            ? typeof(Connection1) 
            : typeof(Connection2)
);

方案特性

  • 完全匹配你期望的模式:委托只负责根据依赖的ISettings配置返回目标实现类型,实例创建、依赖注入、生命周期管理全由容器原生处理
  • 不存在RegisterDelegate手动解析的缺陷:不会绕过容器的装饰器拦截、作用域校验、生命周期释放逻辑
  • 不需要为Connection1/Connection2注册额外的服务键,容器会自动匹配对应类型的注册完成构建

如果你使用的是5.0以下版本的DryIoc,也可以通过Made.Of工厂配置实现相同效果,核心逻辑一致,都是让容器负责最终的实例创建,而非手动返回构造完成的实例。


内容的提问来源于stack exchange,提问作者Christoph Mett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:24:14