2

私は StructureMap をセットアップしていますが、私がやりたいことはすべて 2 つの方法があるように思えますが、それらの違いがわかりません。たとえば、次の 2 つの行の違いは何ですか。

StructureMapConfiguration.ForRequestedType<IConsumer>().AddConcreteType<Consumer>();

StructureMapConfiguration.ForRequestedType<IConsumer>().TheDefaultIsConcreteType<Consumer>();

同様に、AddInstanceOf と ForRequestedType の使用の違いは何ですか?

4

1 に答える 1

3
StructureMapConfiguration.ForRequestedType<IConsumer>().AddConcreteType<Consumer>();

このメソッドは、Consumer タイプを IConsumer のプラグ タイプとして追加します。IConsumer にプラグインされた型が他にない場合、この型は、要求された IConsumer のインスタンスが返す既定の型になります。それ以外の場合は、具象キー (既定では型のアセンブリ修飾名) を使用してこのインスタンスを取得する必要があります。

StructureMapConfiguration.ForRequestedType<IConsumer>().TheDefaultIsConcreteType<Consumer>();

これは AddConcreteType と同様に機能しますが、型を既定の型にする点が異なります。IConsumer のリクエストで具体的なキーが指定されていない場合、これが返されるタイプです。

AddInstanceOf と ForRequestedType の違いについては、AddInstance を使用すると、指定した型のインスタンスの作成を処理するデリゲートを指定できます。ForRequestedType は、CreatePluginFamilyExpression (または ForRequestedType(Type t) の場合は GenericFamilyExpression) のインスタンスを提供し、流暢な方法でインスタンスを構成できるようにします。

于 2008-10-04T14:37:45.403 に答える