gpt4 book ai didi

c# - Func> 与 Func 依赖关系

转载 作者:太空狗 更新时间:2023-10-30 00:30:05 24 4
gpt4 key购买 nike

我知道Func<T>不同于Func<Owned<T>>而且我知道如何注入(inject)每种类型的依赖项。但是,我经常感到困惑,我什么时候更喜欢一个而不是另一个?

假设,我有一个遵循 MVP 模式的应用程序,我想注入(inject)一个 View PrintView .然后,我应该根据什么决定将 View 注入(inject)为 Func<PrintView>Func<Owned<PrintView>>

最佳答案

Func<T>将解决生命周期范围内的项目,该项目将在生命周期范围被释放时处理。例如,在 MVC Controller 的情况下:

  • Controller 从请求生命周期范围内得到解决。
  • 调用Func<T>将解决 T来自请求生命周期范围。
  • 处理请求生命周期范围时, Controller 和任何T实例将在请求范围内处理。

Owned<T>表示您明确承担处置 T 的责任。实例。 Func<Owned<T>>会得到 Owned<T>来自生命周期范围。

  • Controller 从请求生命周期范围内得到解决。
  • 调用Func<Owned<T>>将解决 Owned<T>来自请求生命周期范围。
  • 当处理请求生命周期范围时, Controller 被处理但是Owned<T>实例未处理。您需要自己在 Controller 或应用程序代码的其他地方进行某种清理。

Owned<T>如果您想控制处理事物的时间,这真的很有趣。如果您不关心或希望生命周期范围处置为您处理,那没有意思。

关于c# - Func<Owned<T>> 与 Func<T> 依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41984172/

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