연결된 종속성의 매개 변수를 재정의해야합니다. 재정의 된 매개 변수는 첫 번째 및 두 번째 인스턴스화 된 클래스에 전달되어야합니다.오버라이드 된 매개 변수가있는 Unity 체인 종속성
내 클라이언트 클래스 env
매개 변수 (시작시 알 수 없음)가 포함 된 IA
의 인스턴스가 필요합니다. 그리고 IA
의 생성자는 동일한 사용자 정의 env
매개 변수를 사용하여 IB
의 인스턴스를 필요로합니다. 여기
class A : IA
{
IB _b;
AppEnv _env;
public A(IB b, AppEnv env)
{
_b = b;
_env = env;
}
void DoStuff();
}
class B : IB
{
AppEnv _env;
public A(AppEnv env)
{
_env = env;
}
void DoStuff();
}
그리고 내 클라이언트의 코드는 다음과 같습니다 : 그래서 여기
내 두 클래스의 코드
var env = new... // "good" env, with runtime values
var a = container.Resolve<IA>(new ParameterOverride("env", env));
IA
의 인스턴스는 "좋은"env
매개 변수가 있습니다. 하지만이 매개 변수를 IB
의 인스턴스에 전달하려면 어떻게해야합니까?
내 유니티 구성은 다음과 같이 : 상속을 변경하지 않으려면
var defaultEnv = new ... // default env object
container.RegisterType<IB, B>(new InjectionConstructor(defaultEnv));
container.RegisterType<IA, A>(new InjectionConstructor(defaultEnv));
Unity로 대체하는 대신 AppEnv를 상속하는 기본 클래스를 제안합니다. – JoshYates1980
코드를 가져 오는 것과 같은 방법으로'b'를 얻을 수 없을까요? 그리고 두 개의 매개 변수를 모두 무시할 수 있습니까? 화합을 사용하지 않았지만 코드를 보면 코드가 작동하는 것처럼 보입니다 ... – Chris