- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用装饰器链在 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>();
但是我明白了
Bi-directional dependency relationship detected! Check the StructureMap stacktrace below:
1.) Instance of SOAM.Services.IGeoCoder (SOAM.Services.Geocoding.RedisCachingGeocoder)
2.) new RedisCachingGeocoder(Default of IDatabase, Default of IGeoCoder)
3.) SOAM.Services.Geocoding.RedisCachingGeocoder
4.) Instance of SOAM.Services.IGeoCoder (SOAM.Services.Geocoding.RedisCachingGeocoder)
5.) new HomeController(Default of IGeoCoder, Default of IAlertService)
6.) SOAM.Web.Controllers.HomeController
7.) Instance of SOAM.Web.Controllers.HomeController
8.) Container.GetInstance(SOAM.Web.Controllers.HomeController)
有什么解决办法吗?
最佳答案
DecorateAllWith
默认情况下允许 Autowiring ,并允许以非常简单的方式堆叠装饰器:
For<IGeoCoder>().Use<OviGeoCoder>();
For(typeof(IGeoCoder)).DecorateAllWith(typeof(SqlCachingGeocoder));
For(typeof(IGeoCoder)).DecorateAllWith(typeof(RedisCachingGeocoder));
关于c# - 结构图3多重装饰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27600957/
我正在尝试使用 Structure Map 在我的项目中配置 NCommon NHRepository。我如何阻止它选择最贪婪的构造函数? public class NHRepository : R
我的注册表中有以下代码: Scan(x => { x.Assembly(Assembly.GetExecutingAssembly());
我有一个这样的界面 public interface IWriter { ... } 和一个类 public class WriterMerger { public WriterMerger(
是否可以在注册表中注册一个接口(interface),然后“重新注册”它以覆盖第一次注册? 即: For().Use(); For().Use(); 我想要的是在运行时,当我请求 ISomeInter
我正在使用注册表 DSL 示例来配置结构图。但是这样做会使我所有注册的类型在我的应用程序的所有层中都可用,我在其中添加了对结构图的引用。我不希望我的业务层知道我的数据访问层的任何信息,反之亦然。如何让
既然 ObjectFactory 静态函数已被标记为过时,我目前正在尝试了解结构图。 从长远来看,我必须在 MVC 和 WebApi 应用程序中使用它。以前使用时,静态方法的一行被放置在 global
我正在使用 StructureMap存储 session 对象: config.For().LifecycleIs(new HttpSessionLifecycle()); 一切正常,所以我可以使用
我需要在扫描仪的 Ctor 中发送自定义实例。听到是我的代码: public class RunnableScanner : IRegistrationConvention {
我正在为基于 OWIN 的 Web API 做一些集成测试。我正在使用结构图作为 DI 容器。在其中一种情况下,我需要模拟一个 API 调用(不能将其作为测试的一部分)。 我将如何使用 Structu
我想在请求的生命周期内动态地将一个实例注入(inject)到结构图中(即在注册表/配置之外)。 目前我正在 IHttpModule 的 HandleBeginRequest 事件中执行此操作: con
我有包含 IEnumerable 参数的构造函数。当我尝试将具体对象注入(inject) automocker 时,它没有被使用。 当我使用包含 IEnumerable 属性的包装类时,一切都按预期工
我有一个具有以下 ctor 的服务类: public class (IMessageService emailService, IMessageService smsService) { ... }
我正在使用 Ubuntu 10.04,正在研究内核对象的编程。 我遇到过一些相当复杂的结构,我很难阅读,所以我想我会尝试找到一些可以帮助我可视化它们的工具。 目前我唯一能找到的是VCG ,它有一个 C
我知道错误“没有为此对象定义无参数构造函数”已被询问大约一百万次。我的情况不同 我有一个可以运行的应用程序。许多 Controller 和一个区域有许多 Controller 。我刚刚添加了一个新区域
我有一个接口(interface)和一个定义如下的类 public interface IShape { } public class Square : IShape { } 我知道我可以在结构图中为
我在最近的项目中实现事件处理时遇到了困难。 我已验证 structuremap 正在正确扫描、组装和添加 EventHandlers Scan(cfg => {
使用 structuremap 2.6.4.1 我的容器配置如下: existingContainer.Configure(expression => { expression.For()
我在注册一些像这样的依赖项时遇到问题。 No default Instance is registered and cannot be automatically determined for typ
具体来说,使用容器而不是静态 ObjectFactory 是否能让我保持多个并发配置,或者容器是单例? 最佳答案 如果容器是静态的,则它们只是单例。静态类型存在很多问题,尤其是在可测试性方面,所以我绝
给定 public class Blah : IBlah { public Blah(decimal argument) { } } 什么时候 ForRequestedType
我是一名优秀的程序员,十分优秀!