我正在尝试模拟温莎的“Per Graph”生活方式,以便以正确的方式解析我的对象。我尝试过 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; }
}
}