c# - injection - ninject github
With.Parameters.ConstructorArgument con ninject 2.0 (2)
¿Cómo usar esta funcionalidad en ninject 2.0?
MyType obj = kernel.Get<MyType>(With.Parameters.ConstructorArgument("foo","bar"));
El "Con" no está allí :(
No estoy seguro si Ninject lo admite (actualmente estoy lejos de mi computadora de desarrollo), pero si todo lo demás falla (la documentación de Ninject deja mucho que desear) podría separar la inicialización del constructor para resolver su problema:
class MyType
{
public class MyType() {}
public class MyType(string param1,string param2){Init(param1,param);}
public void Init(string param1,param2){...}
}
Entonces puedes hacer esto:
MyType obj = kernel.Get<MyType>();
obj.Init("foo","bar");
Está lejos de ser perfecto, pero debería hacer el trabajo en la mayoría de los casos.
[Fact]
public void CtorArgTestResolveAtGet()
{
IKernel kernel = new StandardKernel();
kernel.Bind<IWarrior>().To<Samurai>();
var warrior = kernel
.Get<IWarrior>( new ConstructorArgument( "weapon", new Sword() ) );
Assert.IsType<Sword>( warrior.Weapon );
}
[Fact]
public void CtorArgTestResolveAtBind()
{
IKernel kernel = new StandardKernel();
kernel.Bind<IWarrior>().To<Samurai>()
.WithConstructorArgument("weapon", new Sword() );
var warrior = kernel.Get<IWarrior>();
Assert.IsType<Sword>( warrior.Weapon );
}