Development Tip

컨테이너가 빌드 된 후 서비스 추가

yourdevel 2020. 10. 12. 08:15
반응형

컨테이너가 빌드 된 후 서비스 추가


런타임에 서비스를 등록 할 수 있습니까? 즉,를 ContainerBuilder빌드하고 Container생성 (및 ContainerBuilder폐기) 한 후를 의미 합니까?


예, 다음 Update방법을 사용하여 할 수 있습니다 ContainerBuilder.

var newBuilder = new ContainerBuilder();
newBuilder.Register...;

newBuilder.Update(existingContainer);

ContainerBuilder.Update가 더 이상 사용되지 않으므로 새로운 권장 사항은 하위 수명 범위를 사용하는 것입니다.

평생 범위에 등록 추가

Autofac을 사용하면 수명 범위를 만들 때 "즉시"등록을 추가 할 수 있습니다. 이렇게하면 일종의 "스폿 용접"제한 등록 재정의를 수행해야하거나 일반적으로 전체적으로 등록하지 않으려는 범위에 추가 항목이 필요한 경우에 도움이 될 수 있습니다. ContainerBuilder를 가져와 등록을 추가하는 BeginLifetimeScope ()에 람다를 전달하면됩니다.

using(var scope = container.BeginLifetimeScope(
  builder =>
  {
    builder.RegisterType<Override>().As<IService>();
    builder.RegisterModule<MyModule>();
  }))
{
  // The additional registrations will be available
  // only in this lifetime scope.
}

수명 범위 작업

참고 URL : https://stackoverflow.com/questions/4998870/adding-services-after-container-has-been-built

반응형