Autofac:具有多租户依赖关系的单实例对象

时间:2011-03-28 05:37:08

标签: autofac multi-tenant single-instance

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

问题1:将

Resolve<B>()

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

问题2:相同,但A在多租户容器中注册为终身范围,B依赖于

Func<Owned<A>>.

更新:关闭!

由于我的初学者对语义缺乏了解,这是“我想要的是......”的情况;具体来说,我需要在租户生命周期范围内的所有分辨率中构建/共享的实例,这些实例不存在。获得了一些指导,在问题#318上提交了一个补丁,它在变更集752中被拉入主干,我们很高兴去!现在上面的问题是:

  

给出两个A和B类,其中B依赖于A(注入构造函数); B在基本容器中注册为 InstancePerTenant ,并且已构建。 A在MultiTenantContainer中注册为 InstancePerTenant ,因tenantId而异......

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

感谢Travis和Nick的帮助并保持这个伟大的工具。

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的例子,那么两个答案都是“不”。

Autofac可以防止任何长期存在的实例获得对生命周期较短的实例的引用。

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

希望这有帮助!

尼克

(顺便说一句,如果您需要在任何特定情况下输入一些内容,您可以考虑使用所描述的具体组件创建另一个问题。)