ninject 2.0에서이 기능을 사용하는 방법은 무엇입니까?With.Parameters.ConstructorArgument with ninject 2.0
MyType obj = kernel.Get<MyType>(With.Parameters.ConstructorArgument("foo","bar"));
는 "와 함께"
ninject 2.0에서이 기능을 사용하는 방법은 무엇입니까?With.Parameters.ConstructorArgument with ninject 2.0
MyType obj = kernel.Get<MyType>(With.Parameters.ConstructorArgument("foo","bar"));
는 "와 함께"
[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);
}
내가 Ninject에 (나는 현재 멀리 내 개발 컴퓨터에서 해요)를 지원하는 경우 잘 모르겠지만, 다른 모든 경우합니다 (Ninject에 실패가 :(되지 않는다
MyType obj = kernel.Get<MyType>();
obj.Init("foo","bar");
:
class MyType
{
public class MyType() {}
public class MyType(string param1,string param2){Init(param1,param);}
public void Init(string param1,param2){...}
}
이 그럼 당신은이 작업을 수행 할 수 있습니다 문서는 당신의 문제를 해결하기 위해 생성자에서 초기화를 분리 할 수있다)을 많이 원하는 수 잎3210
완벽하지는 않지만 대부분의 경우 작업을 수행해야합니다.
감사합니다.하지만 불행히도이 매개 변수 없이는 내 개체의 생성자를 호출 할 수 없습니다 ... Ninject 1.x는 작업을 꽤 잘 수행하고 있으며이 기능이 어떻게 변경되었는지 알고 싶습니다. 2.0 버전. – andrecarlucci
ResolveAtGet을 사용하여 객체 그래프에서 객체에 깊이 매개 변수를 전달할 수 있습니까? – Zach
Get 메서드 호출은 해결할 최상위 항목에만 매개 변수를 전달합니다. 그 외에도 체인에서 더 깊이있는 객체에 매개 변수를 전달하려면 바인딩에서이를 수행해야합니다. –
@Zach (그리고 Ian하지만 그는 이것을 알고 있습니다!) 기본 WithConstructorArgument/ConstuctorArgumetn ctor에 과부하가있어 args가 상속받은 것으로 표시되어 원하는대로 생각하는 것처럼 자식 Resolutions에 전파시킵니다. (일반적으로 그것의 잘못된 접근과 혼란을 일으킬 것입니다 그러나 거기에 확실히) –