我非常快速和骯髒對其採取
依賴注入控制反轉並不同樣的事情。控制反轉使用 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的全部概念。