Я создаю собственные исключения внутри своих преобразователей, но они перехватываются и оборачиваются Automapper, поэтому мы не можем обрабатывать их где-либо еще в программе. Я включил простой пример проблемы. Желаемый результат — перехватить InterfaceError, но он перехватывает только AutoMapperException с InterfaceError в качестве внутреннего исключения.
В классе :
public Order MapOrder(InterfaceOrder iOrder)
{
try
{
Order mappedOrder = Mapper.Map(iOrder);
}
catch (InterfaceException ex)
{
Log("Interface error");
}
catch (Exception ex)
{
Log("error");
}
return mappedOrder;
}
Сопоставление:
Mapper.CreateMap()
.ForMember(c => c.Name, op => op.ResolveUsing(data =>
{
if (Name.Length > 50)
{
throw new InterfaceException("Error!", ex);
}
else
{
return c.Name
}
}));
Подробнее здесь: https://stackoverflow.com/questions/224 ... -elsewhere