在激活处理程序中替换组件时发布



当我尝试在ActivatingHandler中交换实例并使用OnRelease时,我遇到了问题。OnRelease 需要具体类型,而不是"组件类型"。

简化的示例,其中AA2都实现了IA...

var regBuilder = containerBuilder.RegisterType<A>().As<IA>();
regBuilder.RegistrationData.ActivatingHandlers.Add((sender, e) =>   
{
  e.Instance = new A2();   
}); 
regBuilder.OnRelease(s => ...); //here generic type s is A and not IA -> BAM!

当组件超出范围时,如果它不是RegisterType中声明的类型,我如何运行一些发布代码?

我自己找到了。在此处的OnActivate 下,有针对类似问题的简单解决方案。

首先注册混凝土类型。然后基于此具体类型注册抽象/接口。

最新更新