我使用温莎城堡作为IoC容器,我想解决这依赖于另外一个对象:取决于构造温莎城堡的生活方式参数
var service1 = container.Resolve<IService>(new { obj = obj1 });
var service2 = container.Resolve<IService>(new { obj = obj1 });
var service3 = container.Resolve<IService>(new { obj = obj2 });
:
public MyService : IService
{
public MyService(MyObject obj)
{
}
}
凡与解决我希望service1与service2(相同的参考)相同,而service3不同。因此我需要一种不同于Singleton或Transient的生活方式。只要obj参数相同(通过引用),应该返回相同的对象。
你知道如何做到这一点吗?
什么是你的确切使用情况,我的依赖?你为什么需要这个? – Steven
其实IService是一个工厂,MyObject是工厂依赖的一个对象(可能是一个WCF接收对象)。 – enenkey
防止为构造函数注入运行时依赖项(因为'obj'似乎是)。将值传入“Resolve”方法是一种设计气味。如果'IService'是一个工厂,将'obj'传入工厂'CreateXXX'方法,因为它显然是工厂合同的一部分。 – Steven