나는 오차드에만 국한되지 않는 기능을 캡슐화 한 코드를 가지고있다. 그러나 나는 그것을 의존성 주입을 통해 오차드에서 사용할 수 있도록해야한다. 그래서 모든 구성 요소 (유형)를 등록하는 Autofac Module을 구축했지만 Orchard의 Autofac Container에게이를 알려주는 방법을 찾을 수 없습니다. (일반적으로 시작에서) ContainerBuilder, 에에 모듈을 공급함으로써 아니면 이미 내장 된 컨테이너에서 업데이트하여Orchard에서 사용자 정의 빌드 Autofac.Module을 등록하는 방법?
: 내가 빨간색 것과
, 컨테이너에 모듈을 추가하는 방법에는 두 가지가 있습니다 ContainerBuilder를 사용하는 런타임
첫 번째 방법으로 문제에 접근 할 수 있지만 그럴 경우 두 번째 변형을 사용합니까?
나는 이것을 수행했다는 것을 믿는다 - 나는 자신의 Orchard 모듈 (즉, .csproj)에 공용 클래스 LoaderModule : Autofac.Module을 추가하여 protected override Load (ContainerBuilder builder)를 구현했지만 코드는 그렇지 않다. 어떤 시점에서든 호출됩니다. 편집 : 해결 - 아래 전체 답변을 참조하십시오. – Brondahl
@Piotr you'r 대답 주셔서 감사합니다, orchard가 자동으로 모듈을 선택하는 방법을 명확히 해 주시겠습니까? 왜냐하면 나는 RegisterAssemblyModules() 및 수동 어셈블리 스캔과 같은 것도 볼 수 없었기 때문입니다. –
@BehnamEsmaili 전체 컨테이너 생성 마법은'ShellContainerFactory' 클래스 내에서 발생합니다. 'RegisterAssemblyModules()'를 호출하는 것보다 더 복잡합니다 - 수동적 인 어셈블리 스캔이 있습니다 만, 매우 간접적입니다 ('ShellBlueprint'를 통해). –