Я использую ExceptionLogger
для обработки всех глобальных исключений.Мой наследующий класс требует внедрения зависимостей для вызова Nlog
.
public class NLogExceptionLogger : ExceptionLogger
{
private readonly ILoggingService _loggingService;
public NLogExceptionLogger(ILoggingService<NLogExceptionLogger> loggingService)
{
_loggingService = loggingService;
}
public override void Log(ExceptionLoggerContext context)
{
_loggingService.FirstLevelServiceLog(context.Exception.StackTrace);
}
}
LoggingService Class:
public class LoggingService<T> : ILoggingService<T>
{
private readonly ILogger _logger;
public LoggingService()
{
string currentClassName = typeof(T).Name;
_logger = LogManager.GetLogger(currentClassName);
}
public void FirstLevelServiceLog(string log)
{
_logger.Log(LogLevel.Debug, log);
}
}
Мой код Unity:
public static UnityContainer RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType(typeof(ILoggingService<>), typeof(LoggingService<>))
}
Iя регистрирую ExceptionLogger
глобально, выполнив: (В этой строке я получаю сообщение об ошибке)
config.Services.Add(typeof(IExceptionLogger), typeof(NLogExceptionLogger));
//Register Dependency Container
config.DependencyResolver = new UnityDependencyResolver(UnityConfig.RegisterComponents());
Я получаю следующую ошибку во время выполнения:
Система.ArgumentException: 'Тип RuntimeType должен быть производным от IExceptionLogger.'
Я предполагаю, что я неправильно регистрирую зависимость для NLogExceptionLogger
.
Любая идея о том, какразрешить зависимость при регистрации сервиса?