2016-07-06 52 views
2

我遇到了StructureMap 4.0的問題。在使用StructureMap 3.0時,我使用ObjectFactory來配置所有實例,並且通過解決方案內部任何位置的接口可以非常容易地獲得實例。例如:在StructureMap 4.0中獲取現有容器

  1. 在global.cs,我聲明象下面這樣:ObjectFactory.Initialize(X => {。x.For()使用();}

  2. 在其他類舉例來說,Family.cs,很容易得到Peson的 實例: 變種人= ObjectFactory.GetInstance();

不過,我已經更新StructureMap到4.0後有問題它使用集裝箱來代替。的ObjectFactory,我不知道找到任何方法來獲得現有的容器。我的意思是這段代碼是錯誤的。 var person = container.GetInstance();

如果我將Container聲明爲global.cs中的靜態變量,那麼我可以從Family.cs類訪問它。我不喜歡這種方式。我想通過獲取在global.cs中聲明的現有容器來像ObjectFactory一樣工作,但我不知道該怎麼做。

回答

3

這樣做的方法是將​​作爲類中的構造函數參數。查看更多信息StructureMap

+0

我明白你的意思。但是,我的項目建立了3層結構。 IContainer將在業務層中聲明,但我想從DataAccess Layer訪問IContainer。我怎樣才能做到這一點? (我提醒DataAccess層在商業層下) –

+0

你是什麼意思? IContainer在StructureMap中聲明,而不是在業務層中聲明 – erikkallen