我試圖模擬溫莎的「每圖」生活方式,以正確的方式解決我的對象。我嘗試過Bound的生活方式,但沒有取得任何成功,可能是因爲缺乏對這個主題的瞭解。 我需要在下面的示例代碼表示:模擬溫莎城堡的「每圖」生活方式
class Program
{
static void Main(string[] args)
{
var container = new WindsorContainer();
container.Register(
Component.For<ClassA>().LifestyleBoundTo<ClassC1>(),
//Component.For<ClassA>().LifestyleBoundTo<ClassC2>(),
Component.For<ClassB1>().LifeStyle.Transient,
Component.For<ClassB2>().LifeStyle.Transient,
Component.For<ClassC1>().LifeStyle.Transient,
Component.For<ClassC2>().LifeStyle.Transient);
var c1 = container.Resolve<ClassC1>();
Assert.AreSame(c1.B1.A, c1.A);
var c2 = container.Resolve<ClassC2>();
Assert.AreSame(c2.B2.A, c2.A);
Assert.AreNotSame(c1.A, c2.A);
}
}
class ClassA
{
}
class ClassB1
{
public ClassB1(ClassA a)
{
A = a;
}
public ClassA A { get; set; }
}
class ClassC1
{
public ClassC1(ClassA a, ClassB1 b1)
{
A = a;
B1 = b1;
}
public ClassA A { get; set; }
public ClassB1 B1 { get; set; }
}
class ClassB2
{
public ClassB2(ClassA a)
{
A = a;
}
public ClassA A { get; set; }
}
class ClassC2
{
public ClassC2(ClassA a, ClassB2 b2)
{
A = a;
B2 = b2;
}
public ClassA A { get; set; }
public ClassB2 B2 { get; set; }
}
}
更新 –
我也面臨着類似的問題的答案: http://stackoverflow.com/questions/25064516/dependency-injection-lifestyle-service-shared-instance-between-2-instances-of?noredirect = 1#comment39052582_25064516 如果您找到答案,請讓我知道。 –