public static Type GetTargetType(Type sourceType, IRuntimeMapper runtimeMapper) { if (!lookup.TryGetValue(sourceType.FullName, out var targetType)) { var mapper = runtimeMapper.GetType() .GetField("_inner", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) .GetValue(runtimeMapper) as Mapper; targetType = mapper.ConfigurationProvider.GetAllTypeMaps().Single(m => m.SourceType == sourceType).DestinationType; lookup[sourceType.FullName] = targetType; } return(targetType); }