「StructureMap の方法」ではないことを達成しようとしているように感じます。または、そうかもしれませんが、その方法がわかりません。誰かがこれで私を助けてくれることを願っています:
(プラグインを実行しているアプリケーションによって提供される)Execute
に渡されるメソッドが必要なプラグインを作成しています。
現在、私のコードは次のようになっています。IServiceProvider
public void Execute(IServiceProvider serviceProvider)
{
//The serviceProvider is used to extract references to other objects it supplies:
this.Context = serviceProvider.GetService<IPluginExecutionContext>();
//This could go more than one level deep:
this.Acme = this.Context.Acme;
//Do something with this.Context and this.Acme here...
}
これは、本番環境で実行する場合には問題ありません。ただし、このプラグインを単体テストするときは、StructureMap を使用して IPluginExecutionContext または Acme のモック バージョンを挿入できるようにしたいと考えています。
これで、StructureMap に特定のインターフェイスの具象型を登録させる方法がわかりました。
ObjectFactory.Initialize(x =>
{
x.For<IPluginExecutionContext>()
.Use<MockedPluginExecutionContext>();
});
しかし、構成されている場合はこの MockedPluginExecutionContext を使用するように、または構成されserviceProvider.GetService<IPluginExecutionContext>()
ていない場合はによって返される値を使用するように、Execute 実装を取得するにはどうすればよいでしょうか?