在StructureMap 4.0中获取现有容器

时间:2016-07-06 08:07:58

标签: c# .net structuremap objectfactory

我遇到了StructureMap 4.0的问题。使用StructureMap 3.0时,我使用ObjectFactory来配置所有实例,并且很容易通过解决方案内部的任何接口获取实例。例如:

  1. 在global.cs中,我声明如下:ObjectFactory.Initialize(x => {x.For()。使用(); }

  2. 在另一个类,例如Family.cs,它很容易获得 Peson的一个例子: var person = ObjectFactory.GetInstance();

  3. 然而,在将StructureMap更新为4.0后,我遇到了问题。它使用Container而不是ObjectFactory,我找不到任何方法来获取现有容器。我的意思是这段代码是错误的 var person = container.GetInstance();

    如果我在Global.cs中将Container声明为静态变量,那么我可以从Family.cs类中访问它。我不喜欢这样。我希望Container通过获取在global.cs中声明的现有容器来运行ObjectFactory,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:4)

执行此操作的方法是将IContainer作为类中的构造函数参数。有关详细信息,请参阅此StructureMap