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

Castle Windsor的UsingFactoryMethod在Microsoft DI中的等效实现

Castle Windsor 转 Microsoft DI 等效实现

原Castle Windsor代码示例

Component.For<MultiInstanceFactory>().UsingFactoryMethod<MultiInstanceFactory>(k => t => (IEnumerable<object>)k.ResolveAll(t));

其中,MultiInstanceFactory是如下定义的委托:

public delegate IEnumerable<object> MultiInstanceFactory(Type serviceType);

Microsoft DI中的等效实现

在Microsoft.Extensions.DependencyInjection中,你可以通过AddSingleton注册该委托,用容器的GetServices方法替代Windsor的ResolveAll:

services.AddSingleton<MultiInstanceFactory>(serviceProvider => serviceType => 
    serviceProvider.GetServices(serviceType).Cast<object>());

如果不需要显式类型转换(GetServices返回的IEnumerable<object>本身匹配委托返回类型),还可以简化为:

services.AddSingleton<MultiInstanceFactory>(serviceProvider => serviceProvider.GetServices);

内容的提问来源于stack exchange,提问作者Egli Becerra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:19:56