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

Nia*_*ton 18 c# dependency-injection castle-windsor inversion-of-control

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

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

我通过使用这段代码暂时提出了希望:

container.Register(Component.For<IMyInterface>().Instance(serviceObj));
Run Code Online (Sandbox Code Playgroud)

但是所有Castle都与实例一起做了一个.GetType()并注册了这个类型.对服务的请求随后将导致容器尝试创建该类型,并在无法填充依赖项时失败.

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

有什么建议?谢谢!

Ger*_*nck 27

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


请注意:此技术现已弃用.使用container.Register(Component.For<T>().Instance(myT));替代(感谢eouw0o83hf)

  • 简而言之,此技术现已弃用.使用`container.Register(Component.For <T>().Instance(myT));`代替. (10认同)