2011-09-15 1 views
0
var container = new Container(x => 
               { 
                x.For<IEngine>().Use<V6Engine>(); 
                x.For<ICar>().Use<HondaCar>(); 
               } 
); 

ICar car = ObjectFactory.GetInstance<ICar>(); 

Console.WriteLine(car.Noise()); 

:私はクイックスタートを読んで、私はあなたにも、コンストラクタで使用される特定のインターフェイスをwireup場合、あなたは「ドンと理解 ヘルプ私はエラーを取得しています

StructureMap Exception Code: 202 
No Default Instance defined for PluginFamily ClassLibrary1.ICar, ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 

明示的に各クラスの構成でインターフェイスを配線する必要があります。

上記のように、私はV6EngineにIEngineを接続し、次にICarをHondaCarに接続しました(これはコンストラクタにはすでに接続されているIEngineがあります)。

なぜこれは機能しませんか?

答えて

1

試してみてください。

container.GetInstance<ICar>(); 

はそれがお役に立てば幸いです。

+0

はい、動作しますが、なぜですか? Webアプリケーションでobjectfactoryが動作するでしょうか?コンテナは、コンテナ構成コードを含むファイル以外の他の場所では有効範囲に含まれません。 – codecompleting

+0

asp.net mvcを使用していますか? – alexl

+0

ObjectFactoryを使用する場合は、ObjectFactory.Initialize(x => ...);を使用します。 – alexl