我正在尝试使用装饰器链在 StructureMap 3 中创建依赖关系图:
每个实例都有一个带有多个参数的构造函数,但恰好是内部 IGeocoder 的一个参数,例如
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.) new RedisCachingGeocoder( IDatabase的默认值,IGeoCoder的默认值)
3.) SOAM.Services.Geocoding.RedisCachingGeocoder
4 .) SOAM.Services.IGeoCoder 的实例 (SOAM.Services.Geocoding.RedisCachingGeocoder)
5.) new HomeController( IGeoCoder 的默认值,IAalertService的默认值)
6.) SOAM.Web.Controllers.HomeController
7.) SOAM.Web 的实例.Controllers.HomeController
8.) Container.GetInstance(SOAM.Web.Controllers.HomeController)
任何想法如何解决这个问题?