궁극적으로 그것은 컨테이너에 유형을 등록하는 것입니다. 예 :
var builder = new ContainerBuilder();
builder.RegisterType<Bar>().As<IBar>();
var container = builder.Build();
초기화 중에 어딘가에서 Builder를 사용하는 유사한 코드가 있다고 가정합니다. Autofac이 컨트롤러를 인스턴스화하려고 할 때마다 모든이 등록되면 http://docs.autofac.org/en/latest/register/registration.html
,이 컨트롤러의 생성자를 검사합니다 :
는 등, 여기에 더 많은 정보가 의존성, 수명, 인터셉터를 등록하고 구성하는 여러 가지 방법이 있습니다 의존성으로 IBar
을 찾으면 컨테이너 등록을 찾고 이에 따라 인스턴스를 생성합니다.
IBar
을 인스턴스화 할 때 동일하게 적용되면 IFoo
과 IPanda
이 표시되며 동일한 프로세스가 반복됩니다.
가장 큰 차이점은 Autofac이 컨트롤러의 자동 등록을 지원한다는 것입니다. 단지 수동으로 컨트롤러를 등록하는 번거 로움을 덜어줍니다.
결국 결국 모든 필요에 따라 종속성이 생성됩니다. 의존성을 직접 요청하여 ServiceLocator 스타일의 인스턴스화를 사용하지 않고, Autofac이 생성 중에 종속성을 제공하도록하는 경향이 있습니다.
MVC에서 Autofac을 통합하기위한 몇 가지 단계가 있습니다 (http://docs.autofac.org/en/latest/integration/mvc.html). 어디서 붙어 있었 니? – Win
나는 Autofac를 통합했다. 컨트롤러가 아닌 객체에 종속성을 주입하는 방법에 대해 궁금합니다. –
예 : 서비스 C에 서비스 A와 B를 주입하므로 C가 자체적으로 할 수 있습니다. –