2012-01-30 2 views
2

지금 Microsoft Unity 2를 사용 중입니다. 컨테이너를 구성하여 파일 시스템에서 어셈블리를로드하지 않고 구성 할 수 있는지 여부를 알아야합니다. 구성 파일 (모든 어셈블리를 오른쪽 어셈블리에 포함)에서로드하거나 프로그래밍 방식으로 유형 객체를 등록하십시오. 본질적으로 플러그인을로드하려면이 스크립트가 필요합니다. 모든 플러그인은 동일한 계약 인터페이스를 구현했습니다. 내가 원했던 것은 주 앱 폴더에 새 어셈블리 (플러그인)를 놓을 수 있으며 Unity에 의해 자동으로 발견된다는 것입니다. 그렇게 할 수 있습니까? 아니면 MEF를 사용해야합니까?Microsoft Unity 및 동적 유형/어셈블리로드

도움을 주시면 대단히 감사합니다.

답변

3

Unity는 기본 동작을 지원하지 않습니다. 그러나 그것을 구현하는 것은 어렵지 않습니다.

FileSystemWatcher은 플러그인 폴더에 새 어셈블리를 놓을 때마다 응용 프로그램에 알릴 수 있습니다. 그런 다음 새로운 파일로 무엇을 할 것인가는 관습에 관한 문제입니다. DLL을로드하려면 Assembly.Load을 사용하십시오. 그런 다음 당신은 당신의 인터페이스

assembly.GetExportedTypes().Where(t => typeof(IMyInterface).IsAssignableFrom(t))

의 구현을 위해 그것을 스캔 할 수 있습니다 그리고 당신은 용기와 구현을 등록해야합니다.

이 서비스는 인프라의 일부이므로 컨테이너를 참조하기가 좋다고 생각합니다.

+0

감사합니다. Sebastian – Batiatto

관련 문제