我有一个界面,描述如何将东西写到控制台,还有一个实现,.IConsoleupperCaseConsole
IConsole 使用 Unity 注入到类中。Foo
public interface IConsole {
void WriteLine(string text);
}
public class upperCaseConsole: IConsole {
public void WriteLine(string text){
Console.WriteLine(text.ToUpper());
}
}
public class Foo{
private readonly IConsole console;
public Foo(IConsole console){
this.console = console;
}
public void WriteStuff(string stuff){
console.WriteLine(stuff);
}
}
我现在想更改文本写入控制台的方式。我已经很好地将实现与foo分离,我可以注入一个新的实现,比如说。lowerCaseConsole
public class lowerCaseConsole: IConsole {
public void WriteLine(string text){
Console.WriteLine(text.ToLower());
}
}
我的问题是,尽管我进行了最好的测试,但我并不确定这能完成这项工作,我想同时运行这两个实现一段时间。lowerCaseConsole
如何在不复制所有代码的情况下执行此操作?Foo
我想避免这样的事情:
public class Foo{
private readonly IConsole lowerConsole;
private readonly IConsole upperConsole;
public Foo([Dependency("lower")] IConsole lowerConsole,
[Dependency("upper")] IConsole upperConsole){
this.lowerConsole = lowerConsole;
this.upperConsole = upperConsole;
}
public void WriteStuff(string stuff){
lowerConsole.WriteLine(stuff);
upperConsole.WriteLine(stuff);
}
}
注意:现实生活中的情况是我即将继续进行数据库更改。我想透明地开始写入新数据库,看看事情进展如何,但请继续写入当前数据库,以防万一。
MMTTMM
犯罪嫌疑人X
相关分类