2011-10-13 3 views
5

제 3 자 응용 프로그램 용 플러그인을 만들고 플러그인은 Autofac을 사용하여 다양한 구성 요소를 연결합니다. 컨테이너는 응용 프로그램 시작시 작성되지만 호스트 응용 프로그램은 나중에 내 명령을 호출합니다.구성 요소를 Autofac 컨테이너에 임시로 등록 할 수 있습니까?

명령이 호출되면 호스트 응용 프로그램은 정의 된 유형의 인스턴스를 제공하고 구성 요소는이를 사용해야합니다. 컨테이너에 이러한 인스턴스를 등록하여 이러한 인스턴스에 의존하는 구성 요소를 배선 할 수 있도록하고 싶습니다.

ContainerBuilder를 사용하여 기존 컨테이너를 업데이트 할 수 있지만 해당 인스턴스가 더 이상 유효하지 않으므로 명령이 완료되면이 등록을 제거하고 싶습니다. 이것이 가능한가?

더 나은 방법은 2 개의 컨테이너를 사용하는 것입니다.이 명령은 이러한 인스턴스를 등록 할 새 컨테이너를 만들고 응용 프로그램 범위 컨테이너에서 다른 구성 요소를 확인할 수 있습니다.

해결 방법 호출이 응용 프로그램 범위 컨테이너에 맞출 수 있도록 두 컨테이너를 연결할 수 있습니까?

이 접근법에 대해 알고 있어야 할 문제가 있습니까? 지금은 연구와 테스트와 좀 더 일을했고 그것이 내가 그냥 BeginLifetimeScope을 사용할 수 있습니다 밝혀 (액션 <ContainerBuilder>)를 등록 과부하 : 나는

편집 ... 요소 평생 문제가있을 수 상상 호스트 응용 프로그램은 중첩 된 수명 동안 만 인스턴스를 제공했습니다. 어떤 이유에서든 중첩 된 수명에 등록을 추가하면 루트 컨테이너에 추가되지만 그럴 것 같지 않은 것으로 생각됩니다.

+0

예,이 경우 LifetimeScope가 원하는 것입니다. 귀하의 질문에 대한 답변을 게시하고 승인 된 것으로 표시하여 나중에이 질문을 찾는 사람들은 답을 얻으십시오. –

+0

감사합니다. 이전에 내 답변을 올리려고했으나 아직 충분한 평판 포인트가 없기 때문에 8 시간을 기다려야한다고했습니다. –

+0

예! 나는 이제 내 대답을 게시 할 수는 있지만 내일까지 받아 들일 수 없다 ... –

답변

3

위의 편집에서 언급했듯이 BeginLifetimeScope (동작 <ContainerBuilder>)이 내가 필요한 것입니다. 어떤 이유 때문에 중첩 된 수명에 등록을 추가하면 루트 컨테이너에 추가되어 중첩 된 수명 범위가 끝난 후에 확인할 수 있다고 생각되지만 그럴 수는 없습니다.

관련 문제