я пытаюсь сделать обработку исключений зависимой от контекста. У меня есть класс factory, создающий обработчики исключений. обработчик должен быть построен по последнему выброшенному типу исключения. настраивая структурную карту классическим способом, все работает нормально. пытаясь использовать условное построение, мой код терпит неудачу, и я не понимаю, почему?! Что мне не хватает? Где моя главная ошибка?
привет, -ян
Рабочий код:
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)
{...}
...
}