【问题标题】:Can I create an implicit Lifetime scope within a factory?我可以在工厂内创建隐式 Lifetime 范围吗?
【发布时间】:2013-01-27 19:31:21
【问题描述】:

Autofac 是否支持使用工厂的隐式生命周期范围?例如,我希望能够做到以下几点

public class Session : IDisposable
{
    public Session(A a, B b, C c)
    {
        ...
    }
} 

...

using (var session = _sessionFactory())
{
    ...
}

然后在每次调用 _sessionFactory 时让 Autofac 自动创建一个嵌套的生命周期范围?

【问题讨论】:

    标签: autofac


    【解决方案1】:

    是的。让工厂回Owned<Session>Owned instances 表示调用代码负责处理服务。实际上,如果你从容器中解析出Func<Owned<Session>>,Autofac 会给你一个自动工厂来产生这样的实例。

    【讨论】:

    • 嗨,彼得,我还想要的是,对我工厂的调用也隐式调用了 BeginLifetimeScope,然后通过 Disposing 我的工厂进行跟踪。这样我就不必将 ILifetimeScope 注入我的类本身。
    • @cosullivan - 不确定我是否误解了这里的某些内容,Owned<> 的全部意义在于它确实是它自己的生命周期范围。当您从容器中解析一些 Owned<> 实例时,Autofac 将为您创建一个新的生命周期范围。处理Owned<Session> 实例也将处理Session 实例,以及Session 的任何IDisposable 依赖项。所以是的,如果你有一个解析 Owned<> 的工厂,Autofac 将为你处理范围。
    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多