C# Autofac触发器寿命范围创建

C# Autofac触发器寿命范围创建,c#,dependency-injection,inversion-of-control,autofac,C#,Dependency Injection,Inversion Of Control,Autofac,在解析组件时,是否有任何方法导致创建新的lifetimescope 意思是 container.registerType().As().TriggersNewScope() 还有别的方法吗?除了依赖ILifetimeScope并通过它直接解析之外 如果没有,是否有一种方法可以抽象出ILifetimeScope?我不希望应用程序的这一部分引用Autofac 谢谢实际上并没有“组件触发生命周期范围创建”这样的东西。但是,您可能对以下内容感兴趣。这会导致组件在其自身的小生命周期内解析。实际上并没有“组

在解析组件时,是否有任何方法导致创建新的
lifetimescope

意思是

container.registerType().As().TriggersNewScope()

还有别的方法吗?除了依赖ILifetimeScope并通过它直接解析之外

如果没有,是否有一种方法可以抽象出
ILifetimeScope
?我不希望应用程序的这一部分引用Autofac


谢谢

实际上并没有“组件触发生命周期范围创建”这样的东西。但是,您可能对以下内容感兴趣。这会导致组件在其自身的小生命周期内解析。

实际上并没有“组件触发生命周期范围创建”这样的事情。但是,您可能对以下内容感兴趣。这将导致组件在其自身的小生命周期内解析。

您需要将重用的服务注册为

剩余未解决的部分是避免提及Autofac,以下是一种可能的解决方法:

  • 在Autofac不可知程序集中定义您的IOwned接口
  • 在Autofac-aware composition根目录中定义并注册开放的通用自定义实现:

    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
    }  
    
    class CustomOwned:IOowned,IDisposable
    {
    公共T值{get{return}owned.Value;}
    公共客户所有(Autofac.Owned)
    {
    _拥有=拥有;
    }
    //IDisposable实现和其他任何东西
    }  
    
  • 在类型中使用IOwned而不是Owned


您需要将重复使用的服务注册为

剩余未解决的部分是避免提及Autofac,以下是一种可能的解决方法:

  • 在Autofac不可知程序集中定义您的IOwned接口
  • 在Autofac-aware composition根目录中定义并注册开放的通用自定义实现:

    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
    }  
    
    class CustomOwned:IOowned,IDisposable
    {
    公共T值{get{return}owned.Value;}
    公共客户所有(Autofac.Owned)
    {
    _拥有=拥有;
    }
    //IDisposable实现和其他任何东西
    }  
    
  • 在类型中使用IOwned而不是Owned


听起来和我要找的东西一模一样。在单例中获取一个拥有的实例将从根目录创建一个嵌套的作用域?有没有办法在不引用此程序集中的Autofac的情况下实现相同的功能?听起来和我要找的完全一样。在单例中获取一个拥有的实例将从根目录创建一个嵌套的作用域?是否有任何方法可以在不引用此程序集中的Autofac的情况下实现相同的功能?在singleton中使用此IOwned将按预期工作?应该对其进行更好的测试,但我不明白为什么不进行测试。它抛出一个异常,表示找不到所有者范围。非常感谢!!你的客户很有帮助!!我终于成功了!!!在一个singleton中使用这个IOwned将如预期的那样工作?它应该更好地进行测试,但我不明白为什么不。它抛出一个异常,说找不到所有者范围。非常感谢!!你的客户很有帮助!!我终于成功了!!!