की तुलना में बेहतर हो सकता है यह सवाल Why do I need an IoC container as opposed to straightforward DI code?फिर भी समझने में मदद क्यों Ninject मैनुअल डि
मैं Ninject सीखने किया गया है और निम्न उदाहरण के साथ आया करने के लिए एक विस्तार है की जरूरत है, उदाहरण के ऐसा करने का मैनुअल तरीका माध्यम से चला जाता DI और
class Program
{
static void Main(string[] args)
{
NinjectWay();
ManualWay();
Console.ReadKey();
}
private static void ManualWay()
{
Console.WriteLine("ManualWay***********************");
IWeapon sword = new Sword();
Samurai samurai = new Samurai(sword);
Console.WriteLine(samurai.Attack("ManualWay..."));
// change weapon
IWeapon dagger = new Dagger();
samurai.Weapon = dagger;
Console.WriteLine(samurai.Attack("ManualWay..."));
IWeapon weapon = new Shuriken();
IWarrior ninja = new Ninja(weapon);
Console.WriteLine("Manual way.. inject shuriken when a ninja. " + ninja.Weapon.Name);
IWarrior ninja2 = new Ninja(weapon);
}
private static void NinjectWay()
{
Console.WriteLine("NinjectWay***********************");
IKernel kernel = new StandardKernel();
kernel.Bind<IWeapon>().To<Sword>();
var samurai = kernel.Get<Samurai>();
Console.WriteLine(samurai.Attack("NinjectWay..."));
kernel.Rebind<IWeapon>().To<Dagger>();
samurai = kernel.Get<Samurai>();
Console.WriteLine(samurai.Attack("NinjectWay..."));
kernel.Bind<IWeapon>().To<Shuriken>().WhenInjectedInto<Ninja>();
var ninja = kernel.Get<Ninja>();
ninja.OffHandWeapon = new ShortSword();
Console.WriteLine("Conditional Injection..."+ninja.Weapon.Name);
Console.WriteLine("Conditional Injection: OffhandWeapon = " + ninja.OffHandWeapon.Name);
var ninja2 = kernel.Get<Ninja>();
Console.WriteLine("Conditional Injection..." + ninja2.Weapon.Name);
Console.WriteLine("Conditional Injection: OffhandWeapon = " + ninja2.OffHandWeapon.Name);
Console.WriteLine("");
}
}
मुझे लगता है कि जब परियोजना का स्तर बढ़ता है तो मैं लाभ सुनता हूं लेकिन मैं इसे नहीं देख रहा हूं। इसे बेहतर समझने में मेरी सहायता करें। सी #/निनजेक्ट में और उदाहरण प्रदान करें और मुझे यह समझने में सहायता करें कि लाभ वास्तव में कहां स्पष्ट हो जाते हैं।