2012-05-29 1 views
2

일반적으로 Unity (DIC)는 web.config와 같은 표준 XML 구성 파일을 사용하여 구성됩니다.Unity 컨테이너 구성을위한 데이터베이스 정보 사용

프로젝트의 목적을 위해 Unity는 내가 좋아하는 훌륭한 기능을 제공합니다. 그러나 다른 고객이 XML 설정 파일을 사용하고자 할 수도 있기 때문에 XML 설정 파일을 사용하고자하는 것은 아니기 때문에 고객이 직접 구성을로드 할 수 있도록 어댑터를 만들 수 있기를 바랍니다 (그는 그것을 원한다.

그래서 txt, 사용자 정의 XML 파일, 표준 web.config 파일 또는 더 중요한 것은 필요에 따라 정의 된 데이터베이스 스키마에서 구성을로드합니다. 그래서 컨테이너에 대한 모든 매핑은 그러한 방법 중 하나에 있습니다.

나는 이것을 수행하는 가장 좋은 방법이 무엇인지 생각하고있었습니다. 아마 관례대로 그것을 끝낼 것입니다.

Unity와 경쟁 할 수있는 의견이나 다른 도구가 있습니까?

감사합니다.

답변

3

Unity API를 사용하면 구성 파일에서 수행 할 수있는 모든 작업을 수행 할 수 있습니다. 실제로 설정 파일 로더는 명령어를 읽고 해당 API를 호출합니다.

첫 번째 제안은 API를 사용하여 설정 파일 대신 컨테이너를 구성하는 방법을 고려하는 것입니다. 둘째, 다른 곳에서 config를로드하려면 원하는 형식의 리더를 작성하고로드 한 내용을 기반으로 컨테이너 API를 호출하십시오.

다른 소스의 설정을 읽는 "상자"는 없지만 작성하기 쉽습니다.

+0

@Mamsaac 컨테이너를 쉽게 설치할 수있는 방법을 찾으려면 [TecX on projectplex] (http://tecx.codeplex.com/wikipage?title=AdvancedConfigurationEngineForUnity)를 살펴보십시오. 무엇보다 자동 등록을위한 다양한 규칙을 지원하는 Unity의 향상된 구성 엔진을 제공합니다. –

1

리플렉션을 사용하여 DB에 문자열로 저장된 유형 이름을 type 인스턴스로 변환하는 것이 한 가지 방법입니다. 그런 다음 형식 매핑을 프로그래밍 방식으로 컨테이너에로드하여 응용 프로그램 시작시 Unity를 구성 할 수 있습니다.

나는 순간 VS 열지 않은,하지만 난 뭔가 같은 구문이있을 거라고 생각 : 또한 Microsoft MEF보고 할 수 있습니다

var mapFrom = typeof(IMyInterface); 
var mapTo = Type.GetType("My.App.MyType"); // load the string from the DB 
var container = new UnityContainer(); 
container.RegisterType(mapFrom, mapTo); 

. 정확히을 말하는 것은 아니지만 플러그 - 인 아키텍처를 중심으로 설계되었으며 다른 .dll을 폴더에 드롭하고 앱에서 자동으로 사용하도록 할 수 있습니다.

관련 문제