我非常快速和肮脏对其采取
依赖注入控制反转并不同样的事情。控制反转使用 DI。
IoC是一种在运行时将应用程序拼接在一起而不是编译时间的方式。
而不是在代码中'新建'一个类型,它在运行时由IoC容器注入。
IoC容器知道要注入什么类,因为a)它查看该类的构造函数 - 所有参数都是接口。 b)它会查看它的配置文件,并查看实现了每个接口的哪些类用于在应用程序中表示该接口。
这里是一个非常简单的例子
比方说,你有一个接口IEmailer用于发送电子邮件:
public interface IEmailer
{
void SendEmail();
}
而且至少有一个实现这个接口:
public class IainsEmailer : IEmailer
{
public void SendEmail()
{
// Send email
}
}
您在IoC容器的con中定义图文件(在某种程度上):
IainsEmailer is my choice for IEmailer
然后在你的代码,你可以有以下和IoC容器将注入的IainsEmailer到需要的任何IEmailer构造。
public class MyClass
{
private IEmailer _emailer;
public MyClass(IEmailer emailer)
{
_emailer = emailer
}
// You can now use emailer as if you have created it
_emailer.SendEmail();
}
我可以继续。并且。但这实际上就是IoC的全部概念。