在過去的幾天裏,我已經看了不少IOC/DI/ninject教程和視頻,但我仍然不相信我明白了。Ninject/DI在簡單場景中有用嗎?
在大多數例子,他們通常這樣說,如果我們想劍或飛鏢,我們需要定義IWeapon發生。我們想要分離戰士對實際武器的知識。因此,我們將所需的IWeapon注入戰士,然後讓Ninject(或其他)讓我們進入IWeapon(比如劍或手裏劍)所需的類,但是然後他們繼續創建一個默認綁定,創建一個默認綁定劍與武器的單一綁定。
我們如何告訴它使用哪一個?我們不能使用命名綁定,因爲你不能在武器上設置命名綁定,然後設置Get。
在我來說,我有一個消息,我從隊列中讀取,它會包括什麼派,誰發送到所需的詳細信息。
我也有一個接口,知道如何發送短信,電子郵件,iPhone等實現的消息。我無法理解如何在這種情況下使用DI,而無需在我的代碼中放置一個開關:-(
public interface INotify
{
void Send(Message msg);
}
public class Message
{
public Message(INotify notify)
{
_notify = notify;
}
public void Send()
{
_notify.Send(this);
}
readonly INotify _notify;
public string Type { get; set; }
public string Text{ get; set; }
public string Name { get; set; }
public string Number { get; set; }
public string Email { get; set; }
}
_kernel.Bind<INotify>().To<NotifyEmail>();
//kernel.Bind<INotify>().To<NotifySMS>().Named("sms");
//kernel.Bind<INotify>().To<NotifyAPNS>().Named("iphone");
var msg = _kernel.Get<Message>();
msg.Send();
不整點可以很容易地實例化所需的類?
我喜歡它,特別是IOC如何爲我提供所有通知程序的列表。當我爲Google爲什麼從國際奧委會獲得DTO時Google很糟糕,這很糟糕,我再次看到了你的名字:-) –