Ninject을 사용하여 구현하는 방법에 대한 최소한의 예. 이것은 DI/IoC에 대한 절대적인 진실이 아니며 단지 일 수있는 간단한 예제 일 수 있습니다. 지금까지 IMyRepository
다음 사용하는 경우
구성
// repositories
base.Bind<IMyRepository>().To<MyRepository>();
// services
base.Bind<IMyServices>().To<MyServices>();
은 구체적인 구현 MyRepository
을 사용합니다.
컨트롤러
public class MyController : Controller
{
private readonly IMyServices _myServices;
public AnimalController(IMyServices myServices)
{
_myServices = myServices;
}
// your actions
}
다시 유사한 패턴 (생성자 주입)
서비스
public class MyServices : IMyServices
{
private readonly IMyRepository _myRepository;
public MyServices(IMyRepository myRepository)
{
_myRepository = myRepository;
}
public void Example()
{
_myRepository.PleaseDoSomething();
}
}
는 또한 다른 것들을 많이 있다는 것을 기억하고있다 MyService
내부 IoC를 사용할 수있는 ASP.NET MVC에서 :
- 제이션
- 인증
- 모델 메타 제공
- 정의 모델 바인더
- 제어기 공장 (예 국소 에러 메시지) 등
- 예제 코드에서
업데이트
버그가 있었다. 의존성 주입은 서비스에서 수행되지 않았습니다. 이제는 정확해야합니다.
업데이트 2
나는 매우 귀하의 응용 프로그램을 부트 스트랩 NuGet 패키지를 사용하는 것이 좋습니다 것 같아요. 시간을 절약, 몇 가지 "모범 사례"를 적용 할 수있는, 다른 프로젝트와 유사한 기준 등을 얻을 것이다 여기에 다른 IOC의의 +에 대한 몇 가지 지침은 3
출처
2012-03-02 11:20:29
Tx3
+1은 예제에서 생성자 삽입을 사용하고 DI 컨테이너를 사용하지 않고 수동으로 수행 할 수 있음을 보여주는 예제입니다. –
@SamHolder 정확히는 컨테이너가 "마술"처럼 보이더라도 모든 것이 수동으로 수행 될 수 있습니다. 이 모든 도구의 기능은 정말 훌륭하다고 생각합니다. 선택해야 할 문서의 맛과 품질에 관한 문제 일뿐입니다. – Tx3
아,이 말이 맞습니다. 이 답변을 주셔서 대단히 감사합니다! – Patrick