デコレーターのチェーンを使用して、StructureMap 3 で依存関係グラフを作成しようとしています。
各インスタンスには複数の引数を持つコンストラクターがありますが、内部の IGeocoder の引数は 1 つだけです。
public SomeCachingGeocoder(IGeoCoder inner, IFoo somethingElse)
私は次のようにそれらを接続しています:
For<OviGeoCoder>().Use<OviGeoCoder>();
For<SqlCachingGeocoder>().Use<SqlCachingGeocoder>().Ctor<IGeoCoder>().Is<OviGeoCoder>();
For<RedisCachingGeocoder>().Use<RedisCachingGeocoder>().Ctor<IGeoCoder>().Is<SqlCachingGeocoder>();
For<IGeoCoder>().Use<RedisCachingGeocoder>();
しかし、私は得る
双方向の依存関係が検出されました! 以下の StructureMap スタックトレースを確認してください:
1.) SOAM.Services.IGeoCoder (SOAM.Services.Geocoding.RedisCachingGeocoder) のインスタンス
2.) 新しい RedisCachingGeocoder (デフォルトの IDatabase、デフォルトの IGeoCoder )
3.) SOAM.Services.Geocoding.RedisCachingGeocoder
4 .) SOAM.Services.IGeoCoder (SOAM.Services.Geocoding.RedisCachingGeocoder) のインスタンス
5.) new HomeController( IGeoCoder のデフォルト、 IAlertServiceのデフォルト)
6.) SOAM.Web.Controllers.HomeController
7.) SOAM.Web のインスタンス.Controllers.HomeController
8.) Container.GetInstance(SOAM.Web.Controllers.HomeController)
これを解決する方法はありますか?