gpt4 book ai didi

c#-4.0 - 在传递构造函数参数时在 LightInject 中注册服务时指定生命周期?

转载 作者:行者123 更新时间:2023-12-04 16:10:40 24 4
gpt4 key购买 nike

使用 LightInject,假设我有一个服务,我想用多个构造函数参数注册,例如:

container.Register<double, bool, string, IFoo<String>>(
(factory, arg1, arg2, arg3) => new Foo<String>(arg1, arg2, arg3));

我正在努力弄清楚如何在注册期间指定 ILifetime 实例。使用简单注册,我可以设置 ILifetime 进行简单注册,如下所示:

container.Register<IFoo, Foo>(new PerRequestLifeTime());

似乎所有使用工厂的 Register 方法都假定了 transient 对象。

我可以为参数创建另一个接口(interface)并注册它,但我宁愿不要为每个实例创建新的东西,因为我会在构造函数中使用多个参数。

那么,如何注册一个工厂和一个生命周期的服务呢?

我承认我对 IoC/DI 有点陌生,所以这可能只是因为我误解了如何正确完成这项任务,我相信还有另一种方法可以做到这一点。

最佳答案

我是 LightInject 的作者,我可以告诉您,在您在服务请求期间实际传递 inn 参数的情况下,除了 transient 生命周期之外的任何其他生命周期都没有真正意义。

由于您创建了一个需要解析时间参数的服务,您可能需要一个新的服务实例。

对于不需要解析时间参数的服务,您可以结合使用工厂委托(delegate)和所需的生命周期。

希望对你有帮助

最好的问候

伯恩哈德·里希特

关于c#-4.0 - 在传递构造函数参数时在 LightInject 中注册服务时指定生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22721890/

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