IoC:现有的运行时对象,而不是组件的容器初始化先决条件

时间:2009-10-09 14:58:09

标签: ioc-container

在我的情况下,我使用Castle Windsor作为我的IoC容器。

我想声明一个组件,其中一个构造函数参数将在运行时设置为现有对象,而不是让IoC容器在创建组件时创建对象。例如,我的应用程序的主要表单的实例。

我怀疑有两种方法:

  1. 首次通过容器创建对象,然后使用任何必要的运行时值对其进行配置,以便稍后组件向Windsor请求时,可以使用它。
  2. 创建一个IFormProvider和具体的FormProvider,其中组件需要注入IFormProvider值,然后它会要求表单实例(即formProvider.Form)。
  3. 对此有何进展?

1 个答案:

答案 0 :(得分:1)

这对于Unity及其Fluent界面来说是微不足道的;只需调用容器的RegisterInstance方法即可。在Setting Up the Unity Container对此进行了很好的讨论(对于v1.1,但1.2应该类似)。

我没有使用Castle Windsor,但显然AddComponentInstance是等效的。请参阅Can you register an existing instance of a type in the Windsor Container