Я пытаюсь сделать мою обработку исключений зависимой от контекста. У меня есть фабричный класс, создающий обработчики исключений. обработчик должен быть создан по последнему выброшенному типу исключения. настраивая структура карты классическим способом, все работает отлично. пытаясь использовать условное конструирование, мой код не удается, и я не могу понять, почему ?!
Что мне не хватает? Где моя главная ошибка?
С уважением,
* 1003-январь *
Рабочий код:
ObjectFactory.Initialize(x =>
x.ForRequestedType<IExceptionHandler>()
.TheDefault.Is.OfConcreteType<MyExceptionHandler>());
нерабочий код
ObjectFactory.Initialize(x =>
x.ForRequestedType<IExceptionHandler>().TheDefault.Is.Conditional(o =>
o.TheDefault.Is.OfConcreteType(MyExceptionHandler)));
Получение экземпляра:
IExceptionHandler handler = ObjectFactory.With("exception").EqualTo(exception).GetInstance<IExceptionHandler>();
Так что я постараюсь быть более конкретным:
У меня есть BaseExceptionHandler, MyExceptionHandler, наследующий от Base, и MyException, наследующий от System.Exception. Прямо сейчас, если я пытаюсь получить свой обработчик, я получаю сообщение об ошибке 202. Не определен экземпляр по умолчанию для PluginFamily MyException ...
Классы выглядят так, как показано ниже ...
public class MyException : System.Exception
{
public MyException()
{...}
...
}
public class BaseExceptionHandler
{
public BaseExceptionHandler(Exception exception)
{...}
...
}
public class MyExceptionHandler : BaseExceptionHandler
{
public MyExceptionHandler(MyException exception) : base(exception)
{...}
...
}