Autofac - 强制委托工厂传递新实例,即使类型注册为 InstancePerRequest

Autofac - Force Delegate Factories to pass a new instance even if type is registred as InstancePerRequest

我正在使用 Autofac 委托工厂功能: http://autofaccn.readthedocs.io/en/latest/advanced/delegate-factories.html

问题是,当我在我的 Web 应用程序示例中注册类型时:

builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();

而且我希望它通常应该在每个 HTTP 请求中注入一次。

有时我需要获得一个新的独立实例(例如,为了实现不同的交易)

当我注册委托时:

public delegate IUnitOfWork UnitOfWorkFactory();

当我使用它时自动注入(因为委托工厂功能)我想获得一个新的完整实例。

是否有其他方式获得?

谢谢

我不得不结合使用 OwnedInstances 和 InstancePerLifetimeScope()。

将注册从 IntancePerRequest() 更改为 InstancePerLifetimeScope() 我启用了在另一个范围内时从工厂获取新实例的可能性(而不仅仅是为每个 HTTP 传入请求创建的 'global scope') .

然后将工厂类型封装在 Owned 泛型中 class 我自动声明我希望创建一个新范围。

我是这样声明的:

Func<Owned<IService>>