WPF 응용 프로그램을 구축 중입니다. 나는 Prism 4와 Unity를 사용하고 있습니다. 응용 프로그램에 로깅 및 예외 처리라는 두 개의 Enterprise Library 5 블록을 추가하려고합니다. ILoggerFacade를 지원하는 Infrastructure 클래스에 싱글 톤 LoggerFacadeCustom.cs가 있으며 부트 스트 래퍼에서 로그 파일을 생성했습니다. 그것의 생성자 (유니 코드 컨테이너)에 유니티 컨테이너를 올리는 "뉴스"프리즘, 유니티 및 엔터프라이즈 라이브러리를 통합하는 방법
어디에서 ExceptionManager 용 container.resolve를 추가합니까? 예외 처리 블록을 부트 스트 래퍼의 ILoggerFacade에 어떻게 연결합니까? 모든 예외가 동일한 로그에 나타나게하려면 어떻게해야합니까?
public class LoggerFacadeCustom : ILoggerFacade {
private static readonly LoggerFacadeCustom _instance = new LoggerFacadeCustom();
public static LoggerFacadeCustom Instance { get { return _instance; } }
private LoggerFacadeCustom() {
var container = new UnityContainer();
container.AddNewExtension<EnterpriseLibraryCoreExtension>();
_logWriter = container.Resolve<LogWriter>();
}
private readonly LogWriter _logWriter;
public void Write(string message) { Write(message, null); }
public void Write(string message, string category, int priority) {
_logWriter.Write(message, category, priority);
}
public void Write(string message, Dictionary<string, object> properties) {
_logWriter.Write(message, LiteralString.LogCategoryProcess, properties);
}
#region ILoggerFacade Members
public void Log(string message, Category category, Priority priority) {
throw new NotImplementedException();
}
#endregion
}
Microsoft의 프리즘 (Prism) 책에서는 각 모듈의 컨테이너를 사용하여 단일성을 제안합니다. 모듈이 컨테이너를 사용하지 않고 인터페이스를 등록하는 방법을 설명해주십시오. 그러나 DI를 사용하여 컨테이너를 가져와야합니다. – Alan
@Alan 'UnityContainerExtension'에서 파생 된 특정 클래스에 구성을 아웃소싱하고 모듈에 대한 구성을 번들로 사용할 수 있습니다. 부트 스트 래퍼가 해당 클래스를 검색하여 단일 컨테이너 인스턴스에 추가하도록하십시오. 또는 컨테이너 인스턴스를 모듈에 삽입하고 config를 수행 할 수 있습니다. 나는 그것이 유효한 짧은 지름길이라고 생각한다. –
나를 위해 각 모듈에는 IModule 클래스가 있으며 생성자를 통해 컨테이너를 주입합니다. 그런 다음 초기화는 유형을 등록하고 모듈이 소유 한 서비스를 해결합니다. – Alan