0

在我的例子中,我使用 Castle Windsor 作为我的 IoC 容器。

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

我怀疑有两种方法:

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

这方面有什么进展吗?

4

1 回答 1

1

这对于Unity及其 Fluent 界面来说是微不足道的;只需调用容器的 RegisterInstance 方法。在设置 Unity 容器中有一个很好的讨论(对于 v1.1,但 1.2 应该类似)。

我没有使用 Castle Windsor,但显然 AddComponentInstance 是等价的。请参阅您能否在 Windsor Container 中注册一个类型的现有实例

于 2009-10-10T02:37:33.903 回答