Autfac frage zu LiftTimeScops



  • Hallo Leute,

    ich habe 3 Componenten, welche ich in meine DI (Autofac 2.4.xx) Container registiere:

    var Builder = new ContainerBuilder();
    
                Builder.RegisterType<A>().
                    SingleInstance();
                Builder.RegisterType<B>()
                    .SingleInstance();
                Builder.RegisterType<C>()
                    .SingleInstance();
    
     var Container = Builder.Build();
    

    nun möchste ich dass bei erzeigen eine neue LifeTimeScops imm ein neues Singelton der entsprechenden Komponente erzeugt wird.

    using (ILifetimeScope scope = Container.BeginLifetimeScope())
                {
    
                    var foo= scope.Resolve<C>();
    // C wurde erzeugt
                }
    
    // Hier müsste C "Disposed" werden oder ? Wird es aber nicht.
    

    wenn ich nun nochmal eine LifeTimeScope erzeuge mit

    using (ILifetimeScope scope = Container.BeginLifetimeScope())
                {
    
                    var foo2= scope.Resolve<C>();
    // sollte hier erneut C instaziier werden, was aber nich passiert
                }
    
    // Hier müsste C "Disposed" werden oder ? Wird es aber nicht.
    

    Was mache ich falsch?

    Danke für euere Hilfe 😉



  • Sorry, war etwas zu vorschnell 😃

    Registierung via

    Builder.RegisterType<...>()
                    .InstancePerLifetimeScope();
    

    und es klappt;)


Log in to reply