我有两个组件(AWriter和BWriter),其中都实现了IWriter接口。我有两个组件(AComponent和BComponent),它们都实现了接口IComponent,并且都依赖于IWriter。但是在AC组件中,我想告诉Windsor给我AWriter的实例,而在BComponent中我想告诉Windsor给我BWriter的实例。怎么做?在Windsor Castle中为组件依赖关系添加记号
下面是代码:
public interface IWriter
{
void Write();
}
public class AWriter : IWriter
{
public void Write()
{
Console.Write("A writer");
}
}
public class BWriter : IWriter
{
public void Write()
{
Console.Write("B writer");
}
}
public interface IComponent
{
void Do();
}
public class AComponent : IComponent
{
IWriter writer;
public AComponent(IWriter writer)
{
this.writer = writer;
}
public void Do()
{
writer.Write();
}
}
public class BComponent : IComponent
{
IWriter writer;
public BComponent(IWriter writer)
{
this.writer = writer;
}
public void Do()
{
writer.Write();
}
}
注:这只是简单的问题,并把AWriter在在aComponent和BWriter在BComponent的依赖是不是一种选择。在这个例子中,AComponent和BComponent也可能看起来相同,但这不是真实的情况。在实际情况中,我有更多的依赖和组件,我不想为此而烦恼。
那么,有没有办法以某种方式指定哪些实现应该Castle给我?
[Caste Windsor问题]的可能重复(http://stackoverflow.com/questions/7158858/caste-windsor-problem) –