4

次のように、名前付きインスタンスを構造マップに追加できます。

For<IFoo>().Add<Foo>().Named("FooOne");

私はそれから得ることができます:

ObjectFactory.GetNamedInstance<IFoo>("FooOne");

次のように登録することで、実行時にパラメーターを渡すことができます。

For<IFoo>().Add<Foo>().Ctor<string>("someParam");

次のようなインスタンスを取得します。

ObjectFactory.With("someParam").EqualTo("blah").GetInstance<IFoo>();

大丈夫だ。しかし、私は名前付きインスタンスを持ち、それにパラメーターを渡したいと思っています。だから私はこのように登録しています:

For<IFoo>().Add<Foo>().Named("FooOne").Ctor<string>("someParam");

しかし、名前付きインスタンスを取得し、実行時にパラメーターを渡すための構文を理解できませんか?? 私は次のようなことをしようとしています:

ObjectFactory.With("someParam").EqualTo("blah").GetNamedInstance<IFoo>("FooOne");

しかし、構造マップは、パラメーターを追加した後、GetNamedInstance のオプションを提供しません。どこが間違っていますか?

代替アプローチの提案も良いでしょう。基本的に私がしようとしているのは、列挙型の各要素の具象型を登録し、列挙型アイテムを使用して名前を付け、名前で取得することです。ただし、実行時にパラメーターをコンストラクターに渡すことができる必要があります。

前もって感謝します。

4

2 に答える 2

3

StructureMap は、それを行うための API を提供していません。

抽象ファクトリを使用できます。ここスタック オーバーフローで見つけることができる多くの例があります。

それらのいくつかは、これあれです。

于 2013-11-07T23:07:07.370 に答える
1

使用できます

var args = new ExplicitArguments();
args.SetArg("someParam", blah);
ObjectFactory.Container.GetInstance<IFoo>(args, "FooOne");
于 2014-12-11T21:52:42.913 に答える