Я хочу использовать свой дочерний класс следующим образом:
throw new MyCustomException()
И я всякий раз, когда это вызывается, я хочу обернуть его идентификатором корреляции, который предполагается вводить службой. Я хочу внедрить его в базовый класс, чтобы не писать так
throw new MyCustomException(correlationID)
но я не знаю, как это сделать в ситуации, когда это нужно сделать с помощью внедрения конструктора.
Другими словами, я хочу внедрить зависимость в конструктор без параметров. Что-то такое
class MyBaseException()
{
private IWorkingContext workingContext;
public MyBaseException()
{
this.workingContext = workingContext;
}
}
И да, я знаю, что обычно мне нужно сделать это так:
public MyBaseException(IWorkingContext workingContext)
Но я хочу, чтобы этот конструктор MyBaseException(IWorkingContext workingContext) вызывался без параметров, поэтому, в конце концов, я мог бы использовать свой дочерний класс, такой как MyCustomException(), и завернуть в него рабочий контекст.
Моя регистрация в Виндзоре:
container.Register(Component.For<IWorkingContext>().ImplementedBy<WorkingContext>().LifeStyle.PerWebRequest)
Я пробовал этот подход:
var containerAccessor = HttpContext.Current.ApplicationInstance as IContainerAccessor;
var container = containerAccessor.Container;
var operationContext = container.Resolve<IWorkingContext>();
но это не работает (новый объект создается Виндзором).