autofac/Autofac

IStartable in a child lifetime scope causes recompilation of factory delegates

已关闭

#1,461 创建于 2025年7月3日

 (5 条评论) (0 个反应) (0 位负责人)C# (827 个派生)batch import
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

贡献者指南