2016-07-06 9 views
2

StructureMap 4.0に問題があります。 StructureMap 3.0で作業する場合は、ObjectFactoryを使用してすべてのインスタンスを構成し、ソリューション内の任意の場所で独自のインターフェイスを使用してインスタンスを取得するのは非常に簡単です。例えば:global.csでStructureMap 4.0の既存のコンテナを取得

  1. 、私は以下のように宣言:ObjectFactory.Initialize(X => {x.For()(使用);}他のクラスにおいて

  2. 例えば、Family.csは、それがPesonの インスタンスを取得するのは簡単です: するvar者= ObjectFactory.GetInstance();

はしかし、私は4.0にのStructureMapを更新した後に問題を持っていることではなく、コンテナを使用しています。のObjectFactoryと私はしない既存のコンテナを取得する方法を見つける。私はこのコードが間違っていることを意味する var person = container.GetInstance();

静的変数としてglobal.csに宣言すると、Contain.csクラスからContainerにアクセスできます。私はこのように好きではない。私は、global.csで宣言されている既存のコンテナをフェッチすることによって、ObjectFactoryのようなコンテナの動作をしたいが、それを行う方法はわからない。

答えて

3

これを行う方法は、​​をクラスのコンストラクタ引数として取ることです。詳細はこちらを参照してくださいStructureMap

+0

私はあなたの意味を理解しています。しかし、私のプロジェクトは、3層の構造に従って構築されています。 IContainerはビジネスレイヤで宣言されますが、私はDataAccess LayerからIContainerにアクセスします。どうやってやるの? (私はDataAccessレイヤがビジネスレイヤの下にあることを思い出します) –

+0

どういう意味ですか? IContainerは、ビジネスレイヤではなく、StructureMapで宣言されています – erikkallen

関連する問題