gpt4 book ai didi

.net - 温莎城堡的延迟加载服务

转载 作者:行者123 更新时间:2023-12-04 03:58:58 25 4
gpt4 key购买 nike

有时,我发现自己处于仅在满足特定条件的情况下才需要解决服务的情况。例如,用户可能选择发送电子邮件或短信通知。我想根据用户的选择懒加载电子邮件或短信服务,这样我就不必同时加载它们和浪费资源(例如,如果有10个用户选项,那该怎么办...? )。

我遇到的问题是在 bootstrap 代码之外使用容器(我不希望我的代码依赖于容器)。我似乎找不到使用容器进行延迟加载服务的方法(除非我手动创建所需的服务并手动执行所有DI)。这是规则可以弯曲的情况还是有更好的方法呢?

最佳答案

如果您使用的是CaSTLe Windsor 3.0或更高版本,则可以使用延迟解析。

参见What's new in Windsor 3 for more details

注册过程稍有变化(必须注册新的组件加载程序)。

之后,您将像往常一样注册组件,但是将依赖项解析为Lazy<T>而不是T。在不访问.ValueLazy<T>属性之前,依赖关系将无法解决,因此您可以传递一些延迟评估的对象,并仅在需要时和需要时访问一个对象。

如果您对用户有更多选择,也许您应该考虑创建某种抽象工厂界面。然后,您将仅注册并解析该工厂,工厂本身将创建适当的服务来发送通知(无论是邮件,短信还是其他任何选项)。工厂的实现可以手工编码,CaSTLe Windsor可以用它编码(我认为从3.0版开始)。

通常,当我确实使用此类工厂时,我会手动实现它并通过容器作为其依赖项,因此只有工厂实现取决于我的容器。

关于.net - 温莎城堡的延迟加载服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com