0
我想知道是否在溫莎有以下場景的模式。城堡溫莎覆蓋默認服務覆蓋
基本上我有一個已註冊的服務(DefaultService),並且有一個插件,我想用(PluginBasedService)替換所有實例的服務(DefaultService)。
我正在使用hack -Kernel.RemoveComponent(),然後重新添加基於插件的服務。這似乎很難。對於這種情況,IHandleSelector看起來也很糟糕。
解決「最後註冊」服務的Autofac方法也適用於我。
乾杯, 克里斯
public class VM
{
public VM(IService)
{
}
}
public interface IService {}
public class DefaultService : IService {}
public class PluginBasedService : IService {}
Container.Register(
Component.For<IService>().ImplementedBy<DefaultService>(),
Component.For<VM>()
);
// this is called in a dynamically loaded assembly, after the default service has been registered
Container.Register(
Component.For<PluginBasedService>()
.ServiceOverrides(ServiceOverride.ForKey<IService>.Eq<PluginBasedService>())
);
Container.Resolve<IService>() // is DefaultService -> I want "PluginBasedService"
我整理了一下。我會看看孩子的容器,看看他們是否能解決我的問題。感謝 – Chris
順便說一句,即將發佈的Windsor(v3)版本可讓您在註冊時強制組件成爲服務的默認設置。 –