AutoMapper utilizando el constructor incorrecto

Hoy actualicé una aplicación que funciona completamente con AutoMapper v1.1 para usar AutoMapper v2.1 y me encuentro con algunos problemas que nunca encontré al usar la versión anterior.

Aquí hay un ejemplo de mi mapeo de código desdeDto aDominio objeto

public class TypeOne
{
   public TypeOne()
   {
   }

   public TypeOne(TypeTwo two)
   {
      //throw ex if two is null
   }

   public TypeOne(TypeTwo two, TypeThree three)
   {
      //throw ex if two or three are null
   }

   public TypeTwo Two {get; private set;}

   public TypeThree Three {get; private set;}
}

public class TypeOneDto
{
   public TypeOneDto()
   {
   }

   public TypeTwoDto Two {get; set;}

   public TypeThreeDto Three {get; set;}
}

...

Mapper.CreateMap<TypeThreeDto, TypeThree>();
Mapper.CreateMap<TypeTwoDto, TypeTwo>();
Mapper.CreateMap<TypeOneDto, TypeOne>();

var typeOne = Mapper.Map<TypeOne>(typeOneDto);

Sin embargo, el primer problema que encontré con v2.1 fue que AutoMapper intentaba usar el constructor con 2 argumentos cuando uno de los argumentos era nulo y debería usar el constructor 1 argumento.

Entonces traté de usar

Mapper.CreateMap<TypeOneDto, TypeOne>().ConstructUsing(x => new TypeOne());

Pero seguí recibiendo un error de 'Invocación ambigua' que no pude resolver.

Entonces intenté

Mapper.CreateMap<TypeOneDto, TypeOne>().ConvertUsing(x => new TypeOne());

y eso creó con éxito el objeto TypeOne usando el constructor sin parámetros, pero luego falló en establecer las propiedades del establecedor privado.

Busqué ayuda en el sitio web de AutoMapper y descargué el código fuente para verlo bien, pero no llegué muy lejos con la poca documentación y no hubo muchas pruebas unitarias para la construcción.

¿Hay algo obvio que me esté perdiendo y que debería cambiar con v2.1? Me sorprende que haya cambiado tanto desde v1.1.

Respuestas a la pregunta(1)

Su respuesta a la pregunta