所以控制反轉是一個模糊的描述,因此依賴注入成爲新的定義。這是一個非常非常強大的解決方案,對於從未遇到過這個問題的人來說,這可能會讓人感到困惑。DI,IoC的五個W因爲它使我的大腦爆炸
所以在我追求不成爲頭燈鹿的時候,我讀到了。我發現了幾本了不起的書和在線帖子。但是像所有美妙的事物一樣,更多的問題出現而不是答案。
這個問題吸收了一個未知項目的變量,一旦它們被引入到我的項目中就會被執行。
解決辦法:
public interface ISiteParameter
{
Guid CustomerId { get; set; }
string FirstName { get; set; }
string LastName { get; set; }
string Phone { get; set; }
}
我的注射器:
public interface IInjectSiteParameter
{
void InjectSite(ISiteParameter dependant);
}
然後創建這樣的:
public class SiteContent : IInjectSiteParameter
{
private ISiteParameter _dependent;
#region Interface Member:
public void InjectSite(ISiteParameter dependant)
{
_dependant = dependant;
}
#endregion
}
然後用共享參考實現它被饋送變量我創建了一個類來實現,如:
public class SiteParameters : ISiteParameter
{
public Guid Customer Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
}
現在SiteParameters Class
將被其他項目引用;這將讓我實際調用這些屬性隨時隨地用:
ISiteParameter i = new ISiteParameter();
MessageBox.Show(i.Guid + i.FirstName + i.LastName + i.Phone);
這是執行,但我的問題是這樣的...... 什麼時候適合我?
- 構造器注入
- Setter注入
- 接口注入
你什麼時候會用一個或其他?對於我提到的任務,我應該執行這樣一項艱難的任務,以調整對其他項目所做的任何更改?
我在思考過程中是否脫離了曲線?
我讚揚你進軍DI,它確實很強大。正如你所設置的那樣,與簡單地通過簽名傳遞特定值到你的方法相比,它並沒有太大的好處。當ISiteParameter實例保存特定於其行爲的定義方法時,實際的功能將會出現,除了其他ISiteParameter實例。 – KodeKreachor 2013-03-07 00:24:25
@KodeKreachor我在思考如何實現這些好處。但我是DI/IoC處女。 – Greg 2013-03-07 00:25:40
得指出你試圖實例化一個'接口'.. – 2013-03-07 02:55:01