给出两个A和B类,其中B依赖于A(注入的构造函数); B在基础容器中被注册为SingleInstance,并且它被构建。 A在MultiTenantContainer中作为SingleInstance注册,根据tenantId而不同。Autofac:具有多租户依赖性的单实例对象
问题1:将
Resolve<B>()
认识到B还必须tenantId有什么不同?
问题2:相同,但A被登记为寿命范围的多租户容器内和B取决于
Func<Owned<A>>.
更新:闭合!
这是一个“我想要的确实是想要的......”的情况,因为我的初学者对语义缺乏理解;具体而言,我需要在租户生命周期范围内建立/共享跨所有分辨率的实例,该实例不存在。得到了一些指导,在问题#318上提交了一个补丁,它在变更集752中被拉到了主干上,我们很高兴去!现在,上面的问题将如下:
给定两个A和B类,其中B依赖于A(构造函数注入); B在基础容器中注册为InstancePerTenant,并且它已构建。 A被登记在MultiTenantContainer作为InstancePerTenant,在tenantId不同...
和回答这两个问题现在是“是”。
感谢特拉维斯和尼克的帮助和维护这个伟大的工具。
感谢。我开始仔细阅读资料来了解这一点,而且很快就会明白,这一切都是关于生命的。我很好奇你提到的“保护”。不“拥有”的实例绕过吗? – 2011-03-29 04:10:42
重读你的第二个方案,我不是你的意思是由一个昭然若揭 - 在多租户方面是否仍然参与了第二个方案......但是,是的,你说得对'Owned'改变规则,但它可能会以你所期望的方式出现。这里的大图的一些更多细节可能会有所帮助。干杯! – 2011-03-29 10:47:24
我是新来Autofac和我的问题是获得这种工具本身,而不是它的应用程序的了解,所以抽象的格式是一个更适合。无论如何,它看起来像是一个非启动器,因为MTC通过使用'BeginLifetimeScope(Action)'在子生命周期范围内注册租户特定组件来操作。当只在MTC(子生存期范围)中注册“A”时,任何试图解析“B”(在根上注册)的尝试都将导致“DependencyResolutionException”。 –
2011-03-30 17:11:40