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>>
我正在使用 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>>