我有一个依赖项,它使用静态ServiceManager提供许多服务。它还提供了可用类型列表。
Type[] ServiceManager.GetServiceTypes();
object GetService(Type t);
在Autofac模块中,我想枚举这些类型并注册它们的“动态实例化”。每次请求实例时,我都应该调用ServiceManager.GetService。
答案 0 :(得分:0)
我最终使用自己的RegistrationBuilder,看起来非常时髦,但它确实有效。我错过了一个明显的伎俩吗?
foreach (var type in ServiceManager.GetServiceTypes())
{
var rb = RegistrationBuilder.ForDelegate(
type,
(ctx, parms) => ServiceManager.GetService(type))
.ExternallyOwned();
builder.RegisterCallback(
cr => RegistrationBuilder.RegisterSingleComponent(cr, rb));
}