2015-06-16 64 views
1

我想使用多個綁定進行NInject多次注入,就像the official documentation所述,但是使用多次相同的綁定。將服務綁定到與NInject幾次相同的服務提供商

public class Samurai 
{ 
    readonly IWeapon[] allWeapons; 
    public Samurai(IWeapon[] allWeapons) 
    { 
     this.allWeapons = allWeapons; 
    } 

    public void Attack(string target) 
    { 
     foreach (IWeapon weapon in this.allWeapons) 
      Console.WriteLine(weapon.Hit(target)); 
    } 
} 

然後,而不是給Samurai一個SwordDagger作爲官方例子,我希望他有很多的Shuriken。當然,我可以循環綁定,但有沒有更好的方法來做到這一點?也許定義一個擴展方法?

class TestModule : Ninject.Modules.NinjectModule 
{ 
    public override void Load() 
    { 
     for (int i=0; i<100; i++) 
     { 
      Bind<IWeapon>().To<Shuriken>(); 
     } 
    } 
} 

回答

2

我認爲DI容器不適合滿足這個要求。如果有什麼我會在某處配置什麼類型和多少IWeapon你想instanciate和綁定提供商ICollection<IWeapon>然後可以創建這些根據配置。