나는 수업이 같이 있습니다Ninject와 함께 생성자에서 부모 클래스를 사용하는 클래스를 어떻게 바인딩합니까?
public class MyClass
{
public MyClass()
{
this.Dependency = new Dependency(this);
}
}
내가 생성자에 new Dependency()
전화를 이동하려는.
public class MyClass
{
public MyClass(IDependency dependency)
{
this.Dependency = dependency;
}
}
나는 IDependency
가 '이'생성자 인수로 생성되도록 바인딩하는 방법을 작동하지 않을 수 있습니다.
Bind<IDependency>()
.To<Dependency>()
.WithConstructorArgument("myClass", ctx => ctx.???); // How do I do this?
당신은 전달할 수 없습니다 '이' '이'매개 변수가 생성되는 시점에 존재하지 않기 때문에. 수동 케이스에서는 생성자 자체 내에 생성하기 때문에 '이'가 이미 생성 된 지점에서만 생성됩니다. 일반적으로 이런 종류의 순환 참조는 "코드 냄새"(적어도 종속성이 공용 클래스 인 경우)이므로이를 리팩터링하여 MyClass와 종속성이 둘 다 다른 클래스에 종속되도록 고려할 수 있습니다. 필요한 공유 기능. –
당신은 이것을위한 해결책을 얻었습니까? – Killnine
아닙니다. 저는 기존의 대규모 프로젝트를 리팩토링하고 있으며 한 번에 하나씩 문제를 처리하고 있습니다. 하지만이 방법에 대한 최선의 접근법에 대해서는 아직 명확하지 않습니다. 좀 더 실제적인 예제는'ContactAddress' 의존성을 가진'Contact'이 될 것입니다. (현재 컨 스트럭터에서 인스턴스화됩니다.) 주소는 의존성이 있으므로 해결하려고합니다. 나는'ContactAddress'를 생성자 주입 대신에 속성 주입을 사용하도록 이동할 수 있지만, 여전히 바인딩을 사용하는 것이 확실하지 않습니다. – shamp00