IoC에서 어린이 컨테이너에 대해 사람들이 이야기하는 것을 들었습니다. Google에서 처음으로 무엇이 궁금했는지 궁금해졌습니다.IoC 하위 컨테이너 란 무엇이며 어떻게 사용합니까?
IoC 하위 컨테이너 란 무엇이며 어떻게 사용합니까?
IoC에서 어린이 컨테이너에 대해 사람들이 이야기하는 것을 들었습니다. Google에서 처음으로 무엇이 궁금했는지 궁금해졌습니다.IoC 하위 컨테이너 란 무엇이며 어떻게 사용합니까?
IoC 하위 컨테이너 란 무엇이며 어떻게 사용합니까?
용어에 대한 하나의 정의가 없습니다. 하나의 컨테이너에서 "하위 컨테이너"로 구현되는 것은 종종 다른 컨테이너에서 완전히 다른 논리 기능을 갖습니다.
Autofac 및 일부 유사한 컨테이너에서 "자식 컨테이너"(v2는 "수명 범위"이후이므로)는 "부모"컨테이너보다 수명이 짧은 관련된 구성 요소 집합을 만드는 방법이며 따라서 의존성은 오직 부모와 자식간에 만 해결되고 그 반대의 방법으로는 해결되지 않습니다.
다른 컨테이너는 구현이 다르며 일부는 종속성 확인을 두 가지 방법으로 수행 할 수 있습니다 (적어도 필자의 이해를 돕기 위해).이 질문에 대한보다 정교한 답변을 얻으려면 중요한 컨테이너가 필요합니다.
희망이 도움이됩니다.
IoC (Inversion of Control)는 실제로 수업을하는 법을 알지 못하고 수업을 사용하는 방법을 알지 못하고 수업을 서비스 및 기타 수업에 의존하게하는 방법입니다.
public class MyService
{
public void DoSomething()
{
Logger l = new Logger(); // let's assume this class exists, and it logs stuff
l.Info("Some info logmessage");
}
}
을 여기에 우리가 서비스를 호출 할 수 있습니다 : 다음의 예를 고려
public class MyProgram {
public MyProgram()
{
MyService myService = new MyService();
myService.DoSomething();
}
}
이제 의존성 주입 또는 IOC의, 우리는 로깅의 책임을 반전 할 수 있었다. 모든 단순함에서이 의미는 MyService
이 로거를 설치하는 방법을 실제로 알지 않아야하지만 사용법을 알아야한다는 것을 의미합니다. 그래서
의이 Logger
클래스가 무효 유일한 방법을 포함 ILog
라는 인터페이스를 구현 가정 해 봅시다은 Info(string s)
우리는 다음이 우리의 MyService
클래스를 리팩토링 수 :
public class MyService
{
ILog _logger;
public MyService(ILog logger)
{
_logger = logger;
}
public void DoSomething()
{
_logger.Info("Some info logmessage");
}
}
이것은 우리가 가진 것 의미 리 팩터로 MyProgram
도 있습니다.
public class MyProgram {
public MyProgram()
{
ILog logger = new Logger(); // instanciate it here instead.
MyService myService = new MyService(logger);
myService.DoSomething();
}
}
이것은 기본적으로 Inversion of Control이지만 Dependency Injection에 대해 이야기하기 시작하면이 모든 작업을 자동화 할 수 있습니다. 예를 들어 주사를 위해 Ninject를 사용하려고한다고 가정 해 봅시다. 여기서 코드 예제를 작성하지는 않겠지 만, 어떤 클래스가 ILog
인터페이스를 요청하면 Logger
클래스를 반환해야한다는 것을 알기 위해 Ninject가 실질적으로 설치됩니다.
이렇게하면 다른 인터페이스에 어떤 구현을 사용하고 싶은지 쉽게 변경할 수 있으며 테스트 가능성도 높아집니다.
Ninject를 사용하여 IoC 및 종속성 삽입의 예를 안내하는 tekpub에서 짧은 무료 비디오를 추천합니다. 이 도움이
http://www.tekpub.com/view/concepts/1
희망!
IoC와 dep.injection에 대해 더 일반적으로 대답하면서 질문을 약간 잘못 읽었을 수도 있습니다. 죄송합니다 .. 어쨌든 여기에 남겨 둘 것입니다. 어쩌면 누군가를 도울 수 있습니다 :) –
어쨌든 응답 해 주셔서 감사합니다 !! –
나는 정확한 문맥을 가지고 있지 않다. 미안하지만, 그냥 일반적인 질문 이었어, 고마워. –
도움이 되니 기쁩니다. –