0

给定两个类 A 和 B,其中 B 依赖于 A(构造函数注入);B 在基础容器中注册为 SingleInstance,并构建。A 在 MultiTenantContainer 中注册为 SingleInstance,在tenantId 上有所不同。

问题一:会

Resolve<B>()

认识到 B 也必须在tenantId 上有所不同?

问题 2:相同,但 A 在多租户容器中注册为生命周期范围,而 B 依赖于

Func<Owned<A>>.

更新:关闭!

这是一个“我真正想要的是……”的案例,因为我的初学者对语义缺乏了解;具体来说,我需要在租户生命周期范围内的所有解决方案中构建/共享的实例,而这些实例并不存在。得到了一些指导,提交了关于 issue #318 的补丁,它被拉进了变更集 752 的主干,我们很高兴!现在上面的问题将变为:

给定两个类 A 和 B,其中 B 依赖于 A(构造函数注入);B 在基础容器中注册为InstancePerTenant,然后构建。A 在 MultiTenantContainer 中注册为InstancePerTenant,在tenantId 上有所不同...

现在这两个问题的答案都是“是”。

感谢 Travis 和 Nick 的帮助和维护这个伟大的工具。

4

1 回答 1

0

如果我正确理解了您的示例,那么两个方面的答案都是“否”。

Autofac 防止任何长期存在的实例获得对短期实例的引用。

虽然这可能意味着在这里和那里重新思考设计,但根据我的经验,这会带来更可预测的行为。

希望这可以帮助!

缺口

(顺便说一句,如果您需要对任何特定场景进行一些输入,您可以考虑使用所描述的具体组件创建另一个问题。)

于 2011-03-28T09:28:12.957 回答