AutoMapper usando o construtor errado

Hoje eu atualizei um aplicativo totalmente funcional usando o AutoMapper v1.1 para agora usar o AutoMapper v2.1 e estou me deparando com alguns problemas que nunca encontrei usando a versão anterior.

Aqui está um exemplo do meu mapeamento de código de voltaDto paraDomínio 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);

No entanto, o primeiro problema que encontrei com a v2.1 foi que o AutoMapper estava tentando usar o construtor com 2 args quando um dos argumentos era nulo e deveria estar usando o construtor 1 arg.

Eu então tentei usar

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

Mas continuei recebendo um erro de "Invocação ambígua" que não consegui resolver.

Eu então tentei

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

e isso criou com sucesso o objeto TypeOne usando o construtor sem parâmetros, mas não definiu as propriedades do setter privado.

Procurei ajuda no site do AutoMapper e baixei o código-fonte para dar uma boa olhada, mas não fui longe com a pouca documentação e não havia muitos testes de unidade para o ConstructUsing.

Existe alguma coisa óbvia que eu estou sentindo falta que eu deveria mudar com a versão 2.1? Estou surpreso que isso tenha mudado muito da v1.1.

questionAnswers(1)

yourAnswerToTheQuestion