2011-10-17 3 views
2

두 개의 IServiceA 및 IServiceB 서비스가 있습니다. IServiceB의 구체적인 구현은 다음과 같습니다 Unity Register 서비스 자체를 사용하는 생성자에 대한 유형입니다.

public class ServiceB : IServiceB { 
    public ServiceB(string path, IServiceA serviceA) { ... } 
} 

그래서 나는 문자열과 ServiceA에 전달해야합니다.

나는 내가 어떻게 그렇게 붙어 있나. 나는 실제로 ServiceA를 인스턴스화하고 모든 ServiceB 년대에 하나의 인스턴스를 등록하고있어 같은

var path = _config.Path; 
container.RegisterType<IServiceA, ServiceA>(); 
container.RegisterType<IServiceB, ServiceB>(
      new InjectionConstructor(path, container.Resolve<IServiceA>()); 

이 분명히 잘못이다 : 지금이 권리가 있습니다.

Unity가 항상 "신선한"ServiceA를 해결하도록 어떻게 알 수 있습니까? RegisterType에서 IServiceA를 제거하려고 시도했지만 예외가 발생 했으므로 이므로 올바른 것은 ctor(string)입니다.

답변

2

것은이 특히 잘 설명하지 않습니다,하지만이 일을 나타납니다

container.RegisterType<IServiceA, ServiceA>(); 
container.RegisterType<IServiceB, ServiceB>(
     new InjectionConstructor(path, new ResolvedParameter<IServiceA>())); 

내가 생산에 그것을 사용하기 전에 테스트를 추천 할 것입니다.

1

당신도 할 수 있다고 생각 :

container.RegisterType<IServiceA, ServiceA>(); 
container.RegisterType<IServiceB, ServiceB>(
     new InjectionConstructor(path, typeof(IServiceA))); 
관련 문제