使用 NInject 多次将服务绑定到同一服务提供商

Bind a service to several times the same service provider with NInject

我想使用 NInject 的多重绑定进行多次注入,正如 the official documentation 所述,但多次使用相同的绑定。

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));
    }
}

然后,我希望他有很多Shuriken,而不是像官方例子那样给Samurai一个Sword和一个Dagger。当然我可以循环绑定,但是有更好的方法吗?也许定义一个扩展方法?

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

我认为 DI 容器不太适合满足此要求。如果有的话,我会在某处配置什么类型和多少 IWeapon 你想为 ICollection<IWeapon> 实例化和绑定一个提供者,然后可以根据配置创建这些。