예 :Unity 컨테이너가있는 DI - 추가 매개 변수로 해결되는 모범 사례?
IApple
및 구현 Apple
. Apple
의 생성자 :
public Apple(IVitamin vitamin, int size)
나는 모든 DI를 등록 할 수 있습니다 IApple :
container.RegisterType<IApple,Apple>();
container.RegisterInstance<IVitamin>(vitamin);
INT 크기 매개 변수 삽입 사과의 인스턴스를 생성 할 때 내가 지금 매개 변수를 재정의 할 수
var apple = container.Resolve<IApple>(new ParameterOverrides<Apple> {{"size", 9001}}
을
거기에 매개 변수의 문자열 ("크기")을 써야한다는 것이 귀찮은 것 같습니다. 다른 매개 변수가 관련되어있을 때 DI를 수행하는 것이 가장 바람직한 방법입니까? 아니면 그걸 처리하는 AppleFactory (또는 일반적으로 공장)를 만들어야합니까? (이. 비 DI 속성뿐만 아니라 DI의 사람이있는 모든 클래스의 공장을 작성해야하는 과잉
보인다 또는 당신은 무시하고 수동으로 속성을 설정하지 않겠습니까?
var apple = container.Resolve<IApple>();
apple.Size = 9001;
은이 방법을 코드 로직은 재산의 세터에 생성자에서 전송 될 것이다.
나는 항상 아래에 "특별한"인스턴스화를해야 할 때 공장을 사용한다고 생각했습니다. 따라서 ... = new X()를 호출하는 것은 모든 것이 저장되는 팩토리를 사용하는 동안 중요합니다. DI 컨테이너를 사용할 때 클래스의 60 %에 대해 공장을 생성해야하는 것처럼 들리지만 .... – Thypari