- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有时,我发现自己处于仅在满足特定条件的情况下才需要解决服务的情况。例如,用户可能选择发送电子邮件或短信通知。我想根据用户的选择懒加载电子邮件或短信服务,这样我就不必同时加载它们和浪费资源(例如,如果有10个用户选项,那该怎么办...? )。
我遇到的问题是在 bootstrap 代码之外使用容器(我不希望我的代码依赖于容器)。我似乎找不到使用容器进行延迟加载服务的方法(除非我手动创建所需的服务并手动执行所有DI)。这是规则可以弯曲的情况还是有更好的方法呢?
最佳答案
如果您使用的是CaSTLe Windsor 3.0或更高版本,则可以使用延迟解析。
参见What's new in Windsor 3 for more details。
注册过程稍有变化(必须注册新的组件加载程序)。
之后,您将像往常一样注册组件,但是将依赖项解析为Lazy<T>
而不是T
。在不访问.Value
的Lazy<T>
属性之前,依赖关系将无法解决,因此您可以传递一些延迟评估的对象,并仅在需要时和需要时访问一个对象。
如果您对用户有更多选择,也许您应该考虑创建某种抽象工厂界面。然后,您将仅注册并解析该工厂,工厂本身将创建适当的服务来发送通知(无论是邮件,短信还是其他任何选项)。工厂的实现可以手工编码,CaSTLe Windsor可以用它编码(我认为从3.0版开始)。
通常,当我确实使用此类工厂时,我会手动实现它并通过容器作为其依赖项,因此只有工厂实现取决于我的容器。
关于.net - 温莎城堡的延迟加载服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042581/
所以我目前有一个主 DAO 类 ITrackingToolDAO,它包含我的每个业务实体的所有服务契约(Contract)。 public partial interface ITrackingToo
您好,已将以下组件注册到 CaSTLe Windsor 中: public class CommandDispatcher : IServiceCommandDispatcher { priv
我刚刚下载了动态对象框架Clay我遇到了关于 castle project 的问题版本。 Clay 使用“城堡”v2.0 的功能,而我有一个项目已经开始引用 v2.5。不用说只是为了让事情更有趣,我是
我在将 CaSTLe Windsor Controller Factory 与新的 RenderAction 方法结合使用时遇到了问题。我收到以下错误消息: Controller “MyControl
我试图让 Windsor 为每个请求提供一个实例 ISession,它应该被注入(inject)到所有存储库中 这是我的容器设置 container.AddFacility().Register(
我一直在尝试配置 Windsor 以根据正在构建的类为服务提供不同的实现: 我读过这个 http://docs.castleproject.org/Windsor.Registering-compon
我正在查看 ProDiner 示例 MVC 项目。我将 CaSTLe Windsor 引用从 2 更新为 3。 public static void RegisterAllFromAssemblies
我们在 Windsor 容器上使用 NoTrackingReleasePolicy,因为当我们在使用后不释放我们的组件时会发生内存泄漏。现在考虑以下问题。 一些一次性组件: public class
我是一名优秀的程序员,十分优秀!