我有以下用例:
我想注册在应用程序的所有配置之间共享的所有组件。然后,我想注册一系列动态配置的“插件”,它们表示为IRegistration的自定义实现。
只有这样,我才能解析应用程序的起始点。
我希望插件能做的一件事就是重写服务实现。如下所示:
public class SomePlugin {
public void Register(IKernel kernel) {
kernel.RemoveComponent(typeof(DefaultServiceImplementation).FullName);
kernel.Register(
Component.For<IService>()
.ImplementedBy<AlternateServiceImplementation>())
}
}然而,如果任何已经注册的组件都依赖于IService,那么这将不起作用。
我知道我可以先注册插件,但由于其他几个原因,这是有限制的。如何满足我的特定需求?
我能想到的最好的办法就是
kernel.ResolvingComponent += (model, a, b) => {
if(model.Service == typeof(IService))
model.Implementation = typeof(AlternateServiceImplementation);
}我认为这可以在一些有限的情况下工作,但它远非理想。
发布于 2010-03-05 03:16:29
乔治,
我相信你要找的是IHandlerSelector。
https://stackoverflow.com/questions/2380846
复制相似问题