autofac/Autofac
IStartable in a child lifetime scope causes recompilation of factory delegates
已關閉
#1,461 建立於 2025年7月3日
bughelp wanted
倉庫指標
- 星標
- (4,327 顆星)
- PR 合併指標
- (平均合併 3小時 24分鐘) (30 天內合併 10 個 PR)
描述
Describe the Bug
An IStartable that depends on a Func dynamic instantiation recreates and compiles the factory delegate anew for every lifetime scope.
In the Gist, FactoryGenerator.CreateGenerator is called exactly once for LifetimeWithoutStartable and a total of four times—again once, but also once per lifetime scope—in LifetimeWithStartable.
Steps to Reproduce
https://gist.github.com/Tragetaschen/0f951b32cea3aaf98c1e9b83953dfcf8
Expected Behavior
I don't see a reason why the factory delegate cannot be reused for the startable and would prefer to not pay the expression creation, compilation and native code again and again for every child scope.
Dependency Versions
Autofac: 8.3.0