public class Example {
private DatabaseThingie myDatabase;
public Example() {
myDatabase = new DatabaseThingie();
}
public void DoStuff() {
...
myDatabase.GetData();
...
}
}
public class Example {
private DatabaseThingie myDatabase;
public Example() {
myDatabase = new DatabaseThingie();
}
public Example(DatabaseThingie useThisDatabaseInstead) {
myDatabase = useThisDatabaseInstead;
}
public void DoStuff() {
...
myDatabase.GetData();
...
}
}
public class ExampleTest
{
void TestDoStuff()
{
MockDatabase mockDatabase = new MockDatabase();
// MockDatabase 是DatabaseThingie的子类,所以我们可以在此处注入
Example example = new Example(mockDatabase);
example.DoStuff();
mockDatabase.AssertGetDataWasCalled();
}
}
public class Example
{
private DatabaseThingie myDatabase;
public Example()
{
myDatabase = new DatabaseThingie();
}
public Example(DatabaseThingie useThisDatabaseInstead)
{
myDatabase = useThisDatabaseInstead;
}
public void DoStuff()
{
...
myDatabase.GetData();
...
}
}
1.接口注入
2.设值注入
3.构造方法注入
可以从http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html中获得更多信息。