我有一个windsor工具,我需要使用它来向注册组件添加转发。出于某种原因,我似乎无法弄清楚如何做到这一点。
我有ComponentRegistered
事件限制,我可以过滤掉我需要添加额外接口的内容,但我似乎无法添加前进。这就是我在我的设施中所拥有的:
void KernelComponentRegistered(string key, IHandler handler)
{
if (typeof(ICanDoMagic).IsAssignableFrom(handler.ComponentModel.Implementation))
{
// I don't know what goes here
}
}
protected override void Init()
{
Kernel.ComponentRegistered += KernelComponentRegistered;
}
我有以下接口和类:
public interface ICanDoMagic
public interface IBasicInterface
public class BasicClass : IBasicInterface, ICanDoMagic
这是注册windsor
container.Register(Component.For<IBasicInterface>().ImplementedBy<BasicClass>())
我想要发生的是当用户注册实现ICanDoMagic的东西时(就像我在上面的注册中那样)我想为该类注册ICanDoMagic接口,这样他们就不需要自己注册。我认为这是通过前锋完成的,但我不知道如何添加它。
答案 0 :(得分:2)
您想要附加到Kernel.ComponentModelCreated
。这段代码将适合您:
void KernelComponentModelCreated(ComponentModel model)
{
if (typeof(ICanDoMagic).IsAssignableFrom(model.Implementation))
{
model.AddService(typeof(ICanDoMagic));
}
}
这有点类似于this question。