2 回答

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
一種選擇是創(chuàng)建包含其他兩個(gè)的私有成員的第三個(gè)實(shí)現(xiàn),并且對(duì)其方法的調(diào)用將僅轉(zhuǎn)發(fā)給其他兩種類型。WriteLine
public class BothCaseConsole : IConsole
{
private readonly LowerCaseConsole lcc = new LowerCaseConsole();
private readonly UpperCaseConsole ucc = new UpperCaseConsole();
public void WriteLine(string text)
{
lcc.WriteLine(text);
ucc.WriteLine(text);
}
}
然后只需將此類型注入到:Foo
new Foo(new BothCaseConsole()).WriteStuff("Stuff to write");

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用命名注冊(cè)來注入 。這種方法很容易通過更多的實(shí)現(xiàn)進(jìn)行擴(kuò)展...或者您可以輕松刪除其中一個(gè)...IEnumerable<IConsole>
container.RegisterType<IConsole, LowerConsole>("LowerConsole");
container.RegisterType<IConsole, UpperConsole>("UpperConsole");
container.RegisterType<IEnumerable<IConsole>, IConsole[]>();
然后ctor變得有點(diǎn)不同,還有方法...FooWriteStuff
public Foo(IEnumerable<IConsole> consoles)
{
this.consoles = consoles;
}
public void WriteStuff(string stuff)
{
foreach(var console in consoles)
{
console.WriteLine(stuff);
}
}
- 2 回答
- 0 關(guān)注
- 118 瀏覽
添加回答
舉報(bào)