9
를 사용하여 종속성 속성을 주입하는 나는 다음과 같은 클래스가 :어떻게 IOC의 단결
public interface IServiceA
{
string MethodA1();
}
public interface IServiceB
{
string MethodB1();
}
public class ServiceA : IServiceA
{
public IServiceB serviceB;
public string MethodA1()
{
return "MethodA1() " +serviceB.MethodB1();
}
}
public class ServiceB : IServiceB
{
public string MethodB1()
{
return "MethodB1() ";
}
}
내가 IOC의를 위해 유니티를 사용, 내 등록은 다음과 같습니다
container.RegisterType<IServiceA, ServiceA>();
container.RegisterType<IServiceB, ServiceB>();
가 나는 ServiceA
인스턴스를 해결, serviceB
은 null
입니다. 어떻게 해결할 수 있습니까? 여기
생성자와 속성 삽입 사이에 선택 사항이 있다면 생성자 주입을 선택해야한다고 생각합니다. 속성 주입은 클래스가 하나 또는 다른 호출자가 그 의존성을 제공 할 필요가 있음을 기억한다는 것에 의존하게합니다. 생성자 삽입은 종속성이 클래스에 필수적이라는 것을 클래스를 사용하려는 모든 사람에게 명확하게 알려줍니다. – Carlos
그리고 클래스에 종속성이 여러 개있는 경우 특정 호출에서 모두 필요하지는 않습니까? 그들은 모두 인스턴스화 될 것인가? 또는 위와 같이 액세스 할 때만 인스턴스화됩니다 : serviceB.method()? @Carlos – Legends
@Legends 모든 의존성은 설치되고 모든 방법에서 ServiceA가 사용되지 않는 경우에도 주입됩니다. Unity는 상자에서 즉시 인스턴스화를 지원하지 않지만 확장으로 추가 할 수 있습니다. http://pwlodek.blogspot.hu/2010/05/lazy-and-ienumer-support-comes-to.html – nemesv