Automapper custom TypeConverter Exceptionhandling

In einem Projekt verwende ich aktuell die Komponente AutoMapper (automapper.codeplex.com), im zwischen den externen Datacontracts und den internen Entities zu mappen. Teilweise habe ich dafür auch eigenen TypeConverter entwickelt. Wenn man in diesem TypeConverter eine eigene Exception auslöst, dann erhält man beim aufrufenden Code immer eine AutoMapperMappingException.

Da ich in dem Projekt ein globales ErrorHandling habe (WCF bzw. Implementierung vom IErrorHandler), möchte ich aber die konkrete Exception gerne aus dem TypeConverter in mein Errorhandling weitergeben.

Damit das funktioniert baut man sich am besten einen Wrapper für den Aufruf vom Automapper, um dort zu entscheiden, welche Exception man weitergeben möchte. Die eigene Exception wird als InnerException vom AutoMapperMappingException mitgeliefiert. Durch überprüfung der InnerException kann man als feststellen, wie die aktuelle Exception zu bahandeln ist.

Hier ein Beispiel:
    public class AutoMapperWrapper
    {
        public static U Map<T, U>(
            T source)
        {
            try
            {
                return Mapper.Map<T, U>(source);
            }
            catch (Exception e)
            {
                while (e is AutoMapperMappingException)
                    e = e.InnerException;

                if (e == null)
                    throw;
                else
                    throw e;
            }
        }
    }



Kommentar schreiben