TDD에 대해 더 자세히 알고 싶습니다. DI에 관해서 본 모든 예제는 클래스/인터페이스로만 구현되었습니다.TDD 및 인터페이스 속성 이해
public interface IUserRepository
{
User GetByID(int ID);
}
public class UserRepo : IUserRepository
{
private IUserRepository Repo;
public UserRepo(IUserRepository repo)
{
this.Repo. = repo;
}
public User GetByID(int ID) {}
}
.....
private void SetupDI()
{
container.Register<IUserRepository>.With(UserRepository);
}
나는 최근에 속성이있는 인터페이스를 작성하기 시작했으며 어떻게 완료 될지 확신 할 수 없으므로 중단되었습니다.
DI의 인터페이스가 OK 인 속성이 있습니까? 좋은 디자인인가요?
나는 이러한 속성과 같이 주입 될 것이라고 가정 할 것이다 :
private void SetupDI()
{
var myStringProp = GetPropValue("MyStringProp");
var myIntProp = GetPropValue("MyIntProp");
container.Register<IUserRepository>.With
(
new UserRepository(myStringProp,myIntProp)
);
}
감사합니다. 컨테이너가 설정되었을 때 매개 변수가 프로그램의 시작 부분에 전달된다는 가정이 맞습니까? – Jon
이 대답에 동의하십시오. 두 가지 모두 테스트 가능하지만 전자는 엄격하고 궁극적으로 유지 관리가 쉽습니다. – lukiffer
@ 존 : 예. 의존성을 구체적인 클래스에 바인딩 할 때 매개 변수를 전달하면됩니다. 대부분의 컨테이너는 프리미티브의 매개 변수를 명시 적으로 지원합니다 (예 : 'WithConstructorArgument'를 사용하여 호출하십시오. 다른 모든 종속성은 해당 유형이 등록 된 경우 컨테이너에 의해 자동으로 해결됩니다. – BrokenGlass