解析组件时是否有任何方法可以创建新的lifetimescope
?
含义如
container.registerType(),作为()。TriggersNewScope()
还有其他办法吗?除了依赖ILifetimeScope
并直接解决它?
如果没有,是否有办法抽象ILifetimeScope
?我不希望应用程序的这一部分引用Autofac ..
由于
答案 0 :(得分:1)
实际上没有“组件触发生命周期范围创建”的事情。但是,您可能对Owned<T>
感兴趣。这导致组件在其自己的小生命周期内得到解决。
答案 1 :(得分:1)
您需要将重复使用的服务注册为InstancePerOwned。
剩下的未解决的部分是避免引用Autofac,这是一个可能的解决方法:
在Autofac感知组合root中定义并注册开放式通用CustomOwned实现:
class CustomOwned<T> : IOwned<T>, IDisposable
{
public T Value { get { return _owned.Value; } }
public CustomOwned(Autofac.Owned<T> owned)
{
_owned = owned;
}
// IDisposable implementation and whatever additional stuff
}
在您的类型中使用IOwned而非Owned。