使用Castle Windsor指定组件注册实例

我有一个关于Castle Windsor的简单问题,我很久没有使用过了。 我正在尝试使用特定实例注册服务,该实例将是服务的单例实现。

容器无法尝试创建服务本身的实现,因为它具有容器无法解析的依赖项。 我有一个服务实例,我希望它是唯一一个用于请求服务的人的实例。 但我似乎很少运气。

我暂时通过使用这段代码获得了希望:

container.Register(Component.For().Instance(serviceObj)); 

但是所有Castle都使用实例在其上执行.GetType()并注册该类型。 对服务的请求将随后导致容器尝试创建该类型,并在无法填充依赖项时失败。

那么有什么方法可以做我想做的事情吗? 如果不是,我将创建某种IServiceProvider来获取服务的实例,并且没有容器的依赖关系来填写。 但这比正确的解决方案更像是一种解决方案。

有什么建议? 谢谢!

尝试在容器的Kernel对象上使用AddComponentInstance方法。 我想这就是你需要的。


请注意:此技术现已弃用。 使用container.Register(Component.For().Instance(myT)); 相反(感谢eouw0o83hf)

您可以通过容器的Kernel属性执行此操作:

 container.Kernel.AddComponentInstance(serviceObj);