2009-09-02 4 views

答えて

2

あなたはこのような何かを行う必要があります: -

StructureMapConfiguration 
    .ForRequestedType<IResourceA>() 
    .TheDefaultIsConcreteType<ResourceB>() 
    .CacheBy(InstanceScope.Singleton); 

これはResourceAの要求があった場合にResourceBを注入するのStructureMapを伝えます。

1

Structure Map

あなたはプログラム的または構成ファイルを経由して設定することができます。

Programatical例(他の方法があります):

StructureMap.StructureMapConfiguration.ForRequestedType<ISomething>().TheDefaultIsConcreteType<ConcreteSomething>(); 

、あなたは、コードのこの種を使用して設定型のインスタンスを取得することができます:

//The concrete type will be ConcreteSomething 

ISomething instance = ObjectFactory.GetInstance<ISomething>(); 

あなたが設定でそれを行うことができますファイル:

<StructureMap MementoStyle="Attribute"> 
     <DefaultInstance PluginType="Blah.ISomething, Blah.SomethingDLL" PluggedType="Blah.Concrete.ConcreteSomething,Blah.ConcreteDLL"/> 
</StructureMap> 

とmainメソッドまたはGlobal.asaxの中にあなたが言うことで、この設定を設定できます。

StructureMap.ObjectFactory.Initialize(x => { x.PullConfigurationFromAppConfig = true; }); 

し、それを上記と同じように使用します。

ISomething instance = ObjectFactory.GetInstance<ISomething>(); 

を具象クラスがそれに注入されたインスタンスを必要とするコンストラクタを持っており、あなたがそれらの設定している場合、具体的な種類がで注入されます枠組み。

Gereric型を扱うコンストラクタにパラメータを渡し、特定のコンストラクタ/プロパティ値で構成された名前付きインスタンスを作成する方法があります。私はこのフレームワークを使用し、非常に好きです。

関連する問題