在ActivatingHandler中替换组件时的OnRelease

时间:2014-02-28 14:40:38

标签: autofac

当我尝试在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中声明的类型,我如何运行一些发布代码?

1 个答案:

答案 0 :(得分:0)

我自己找到了。在OnActivating here下,针对类似问题提供了一个简单的解决方案。

首先注册具体类型。然后根据这种具体类型注册抽象/接口。