在我的情况下,我使用Castle Windsor作为我的IoC容器。
我想声明一个组件,其中一个构造函数参数将在运行时设置为现有对象,而不是让IoC容器在创建组件时创建对象。例如,我的应用程序的主要表单的实例。
我怀疑有两种方法:
IFormProvider
和具体的FormProvider
,其中组件需要注入IFormProvider
值,然后它会要求表单实例(即formProvider.Form
)。 对此有何进展?
答案 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。